Limitations et modifications apportées à la bibliothèque¶
Cette rubrique décrit les limites et les changements de comportement des fonctions lorsqu’une fonction Streamlit fonctionne différemment dans Snowflake et dans la bibliothèque open-source.
To view release notes for each Streamlit version, see Streamlit documentation.
Limitations and changes for all runtimes¶
Les limitations suivantes s’appliquent à toutes les applications Streamlit in Snowflake, quel que soit le runtime :
Composants personnalisés avec scripts externes
Using external stages isn’t supported.
Replication isn’t supported.
Using
.sofiles isn’t supported.
Limitations and changes that vary by runtime¶
Le tableau suivant compare les limitations qui diffèrent entre les runtimes d’entrepôt et les runtimes de conteneur (prévisualisation). Pour plus d’informations sur les environnements d’exécution, voir Environnements d’exécution pour les applications Streamlit.
Limitation |
Runtime d’entrepôt |
Runtime de conteneur (prévisualisation) |
|---|---|---|
3.9, 3.10, 3.11 |
3.11 uniquement |
|
1.22+ (sélection limitée). |
1.50+ (toutes les versions, y compris les versions |
|
Not supported |
Pris en charge |
|
32 MB |
Configurable |
|
200 MB |
Configurable |
|
Nécessite une prise en compte des conditions des offres externes. |
Non soumis aux conditions des offres externes. |
|
Mise en cache d’une seule session. Les valeurs mises en cache ne peuvent pas être partagées entre les sessions. |
Entièrement prise en charge. Les valeurs mises en cache sont partagées par toutes les sessions de visualisation, à moins que vous n’utilisiez la définition de la session dans le décorateur de cache. |
|
Paramètre ROOT_LOCATION |
Pris en charge en tant que paramètre existant dans CREATE STREAMLIT. |
Not supported |
Fenêtre de maintenance |
Non applicable |
Selon la Snowpark Container Services fenêtre de maintenance. |
Service de fichiers statiques |
Not supported |
Pris en charge |
Détails de la limitation¶
Fonctions Streamlit non prises en charge¶
The following Streamlit features are not fully supported in Streamlit in Snowflake:
st.set_page_config:The
page_title,page_icon, andmenu_itemsproperties of thest.set_page_configcommand aren’t supported.Fichier
config.toml:Pour un résumé des options de configuration prises en charge et non prises en charge, voir Configuration de Streamlit.
Loading external resources¶
Toutes les applications Streamlit in Snowflake s’exécutent dans la politique de sécurité du contenu (CSP) qui restreint les ressources qui peuvent être chargées. La CSP bloque le chargement de code à partir de domaines externes et l’intégration de contenu externe dans des iframes. Elle bloque également les appels frontaux qui sont généralement considérés comme dangereux, tels que eval(). Pour plus d’informations sur CSP, voir Politique de sécurité du contenu.
Par exemple, le code suivant s’exécute sans erreur Python, mais le script n’est pas chargé ni exécuté dans le navigateur :
# This won't work
st.html(
"<script src="http://www.example.com/example.js"></script>",
unsafe_allow_javascript=True
)
Note
Les développeurs d’applications sont responsables des contrôles de sécurité et de la chaîne d’approvisionnement du code de l’application Streamlit in Snowflake conformément au modèle de responsabilité partagée de Snowflake.
Composants personnalisés¶
En raison de la CSP, les composants personnalisés ne peuvent pas charger de scripts à partir de domaines externes dans les runtimes des entrepôts et des conteneurs. Étant donné que les composants basés sur des paquets utilisent un répertoire d’actifs pour servir leur contenu statique, les différences suivantes s’appliquent :
Dans les runtimes d’entrepôt, les composants v2 basés sur des paquets qui utilisent un répertoire d’actifs ne sont pas pris en charge.
Dans les runtimes de conteneurs, les composants v2 basés sur des paquets sont entièrement pris en charge.
Pour utiliser un composant personnalisé v2 dans un runtime d’entrepôt, il doit être défini avec des HTML, CSS, et JavaScript en ligne.
Note
Components imported from a third-party source are subject to the license attached to that component. You are responsible for ensuring that your use of a component is permitted by its license.
Snowflake doesn’t build or maintain third-party components that you might import into Streamlit in Snowflake. Use of such components is at your own risk and is not subject to any warranties, service level agreements, or other similar guarantees by Snowflake.
Paramètres de requête¶
For st.query_params in Streamlit in Snowflake, a streamlit- prefix is added to each query parameter key in the URL. This prefix
isn’t included when you use st.query_params to get or set a value.
Prenons l’URL suivante :
https://app.snowflake.com/org/account_name/#/streamlit-apps/DB.SCHEMA.APP_NAME?streamlit-first_key=one&streamlit-second_key=two
The parameters in this URL are accessible in st.query_params as the following key-value pairs:
{
"first_key" : "one",
"second_key" : "two"
}
Affichage de grandes quantités de données¶
Streamlit apps running in warehouse runtimes have a 32-MB limit on the size of messages exchanged between the backend and the
frontend. If you attempt to display more than 32 MB of data with a single Streamlit command, like st.dataframe, the following error occurs:
MessageSizeError: Data Size exceeds message limit
Pour éviter cette limite, concevez votre application Streamlit de manière à afficher les données par incréments inférieurs à 32 MB. Il n’existe pas de limite explicite à la taille d’une requête que vous pouvez exécuter ou à la quantité de données que vous pouvez avoir en mémoire.
Dans les runtimes des conteneurs, cette limite est définie par défaut sur 200 MB et peut être modifiée en définissant l’option de configuration Streamlit, server.maxMessageSize. Cependant, la taille des messages ne peut pas dépasser la capacité de la mémoire du conteneur. Autoriser des messages plus volumineux pourrait dépasser la limite de mémoire du conteneur, en particulier si des lecteurs simultanés sont présents.
Chargements de fichiers¶
La limite de taille de fichier par défaut pour st.file_uploader et st.chat_input est de 200 MB. Dans les runtimes des entrepôts, cette valeur n’est pas configurable. Dans les runtimes des conteneurs, cette limite peut être modifiée en définissant l’option de configuration Streamlit, server.maxUploadSize. Cependant, la taille du fichier ne peut pas dépasser la capacité de la mémoire du conteneur. Autoriser des fichiers plus volumineux pourrait dépasser la limite de mémoire du conteneur, en particulier si des lecteurs simultanés sont présents.
Pour les fichiers plus volumineux, envisagez de traiter les données par lots de plus petite taille ou d’utiliser d’autres méthodes de chargement.
Mapbox et Carto¶
Mapbox et Carto fournissent des vignettes cartographiques lorsque vous utilisez les commandes st.map ou st.pydeck_chart Streamlit.
Dans les runtimes d’entrepôt, qui gèrent leurs paquets avec conda, Mapbox et Carto sont des applications tierces qui sont soumises aux Conditions des offres externes de Snowflake.
Pour utiliser ces commandes dans les runtimes d’entrepôt, vous devez accepter les conditions des offres externes. Les runtimes de conteneur ne nécessitent pas cette acceptation.
Mise en cache¶
La mise en cache est partiellement prise en charge dans les runtimes des entrepôts et entièrement prise en charge dans les runtimes des conteneurs.
Dans les runtimes d’entrepôt, la mise en cache est limitée à la mise en cache d’une seule session. Les valeurs mises en cache ne peuvent pas être partagées entre les sessions. Dans les runtimes de conteneurs, la mise en cache est entièrement prise en charge. Les valeurs mises en cache sont partagées entre toutes les sessions de lecteur.