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 :

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)

Versions de Python

3.9, 3.10, 3.11

3.11 uniquement

Versions de Streamlit

1.22+ (sélection limitée).

1.50+ (toutes les versions, y compris les versions streamlit-nightly).

Composants v2 basés sur les paquets

Not supported

Pris en charge

Affichage de grandes quantités de données

32 MB

Configurable

Chargements de fichiers

200 MB

Configurable

Mapbox et Carto

Nécessite une prise en compte des conditions des offres externes.

Non soumis aux conditions des offres externes.

Mise en cache

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, and menu_items properties of the st.set_page_config command 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
)
Copy

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"
}
Copy

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.