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.
Pour consulter les notes de version de chaque version de Streamlit, voir la Documentation Streamlit..
Limitations et modifications pour tous les runtimes¶
Les limitations suivantes s’appliquent à toutes les applications Streamlit in Snowflake, quel que soit le runtime :
Composants personnalisés avec scripts externes
L’utilisation de zones de préparation externes n’est pas prise en charge.
La réplication n’est pas prise en charge.
L’utilisation des fichiers
.son’est pas prise en charge.
Limitations et modifications variables selon l’environnement d’exécution¶
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 |
|
Non pris en charge |
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. |
Non pris en charge |
Fenêtre de maintenance |
Non applicable |
Selon la Snowpark Container Services fenêtre de maintenance. |
Service de fichiers statiques |
Non pris en charge |
Pris en charge |
Détails de la limitation¶
Fonctions Streamlit non prises en charge¶
Les fonctionnalités Streamlit suivantes ne sont pas entièrement prises en charge dans Streamlit in Snowflake :
st.set_page_config:Les propriétés
page_title,page_iconetmenu_itemsde la commandest.set_page_configne sont pas prises en charge.Fichier
config.toml:Pour un résumé des options de configuration prises en charge et non prises en charge, voir Configuration de Streamlit.
Chargement des ressources externes¶
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
Les composants importés à partir d’une source tierce sont soumis à la licence attachée à ce composant. Vous devez veiller à ce que votre utilisation d’un composant soit autorisée par sa licence.
Snowflake ne crée pas et ne gère pas les composants tiers que vous pourriez importer dans Streamlit in Snowflake. L’utilisation de ces composants se fait sous votre entière responsabilité et n’est pas soumise à des garanties, des accords de niveau de service ou d’autres garanties similaires de Snowflake.
Paramètres de requête¶
Pour st.query_params dans Streamlit in Snowflake, un préfixe streamlit- est ajouté à chaque clé de paramètre de requête dans l’URL. Ce préfixe n’est pas inclus lorsque vous utilisez st.query_params pour obtenir ou définir une valeur.
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
Les paramètres de cette URL sont accessibles dans st.query_params comme les paires clé-valeur suivantes :
{
"first_key" : "one",
"second_key" : "two"
}
Affichage de grandes quantités de données¶
Les applications Streamlit exécutées dans les runtimes d’entrepôt sont contraints à une limite de taille de 32 MB pour les messages échangés entre le backend et le frontend. Si vous essayez d’afficher plus de 32 MB de données avec une seule commande Streamlit, comme st.dataframe, l’erreur suivante se produit :
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.