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.
Fonctions Streamlit non prises en charge¶
Les fonctions Streamlit suivantes ne sont pas prises en charge dans Streamlit in Snowflake :
-
Les propriétés
page_title,page_iconetmenu_itemsde la commandest.set_page_configne sont pas prises en charge. Liens d’ancrage
Limitations lors du chargement de ressources externes dans Streamlit in Snowflake¶
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. Snowflake bloque le chargement de code , y compris les scripts, les styles, les polices et l’intégration d’iframes, à partir de n’importe quel domaine externe. Cependant, le chargement d’un sous-ensemble de ressources à partir de Mapbox ou Carto est pris en charge.
Lorsque vous utilisez les commandes Streamlit st.map ou st.pydeck_chart dans la version 1.45.1 ou inférieure de Streamlit, Mapbox fournit les vignettes de la carte lors du rendu du contenu de la carte. Pour les versions 1.46.1 et supérieures de Streamlit, Carto est un fournisseur par défaut. Mapbox et Carto sont des applications tierces et sont soumises aux Conditions des offres externes de Snowflake.
Le chargement d’images ou de médias à partir de domaines externes est pris en charge dans Streamlit in Snowflake, mais pas dans Snowflake Native App Framework.
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 will not work
import streamlit.components.v1 as components
components.html("""
<script src="http://www.example.com/example.js"></script>
""", height=0)
Le CSP bloque également les appels frontaux qui sont généralement considérés comme dangereux, tels que eval().
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.
Limitations lors de l’utilisation de composants personnalisés dans Streamlit in Snowflake¶
Actuellement, Streamlit in Snowflake ne prend en charge que les composants personnalisés qui ne nécessitent pas d’appeler des services externes.
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.
Limitations Streamlit in Snowflake supplémentaires¶
Streamlit in Snowflake présente les limitations supplémentaires suivantes :
La mise en zone de préparation externe n’est pas prise en charge.
La réplication n’est pas prise en charge.
L’utilisation de fichiers .so n’est pas prise en charge.
Les applications Streamlit ont une limite pour l’affichage des données..
st.cache_data et st.cache_resource ne sont pas entièrement pris en charge.
st.file_uploader a une limite de 200 MB pour les fichiers chargés.
Les applications Streamlit ont une limite pour l’affichage des données.¶
Les applications Streamlit exécutées dans Streamlit in Snowflake et dans les Snowflake Native Apps sont soumises à 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.
Streamlit in Snowflake ne prend en charge que les zones de préparation internes qui utilisent le chiffrement côté client.¶
L’éditeur Streamlit in Snowflake ne prend pas en charge la création d’un objet STREAMLIT à partir de fichiers sur une zone de préparation nommée qui utilise le chiffrement côté serveur. Dans ce cas, Snowsight renvoie une erreur.
st.cache_data et st.cache_resource ne sont pas entièrement pris en charge¶
st.cache_data et st.cache_resource ne sont pas entièrement pris en charge dans Streamlit in Snowflake. La mise en cache ne fonctionne qu’au sein d’une même session. Les valeurs mises en cache ne peuvent pas être reportées sur d’autres sessions ni partagées entre différents utilisateurs d’une appli Streamlit.
st.file_uploader a une limite de 200 MB pour les fichiers chargés¶
Lorsque vous utilisez st.file_uploader, vous pouvez charger des fichiers limités à 200 MB chacun. Cette configuration n’est actuellement pas prise en charge dans Streamlit in Snowflake. Pour les fichiers plus volumineux, envisagez de traiter les données en lots plus petits ou d’utiliser d’autres méthodes de chargement.
Changements dans l’utilisation des paramètres de requête dans Streamlit in Snowflake¶
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 sous la forme des paires clé-valeur suivantes :
{
"first_key" : "one",
"second_key" : "two"
}
Pour plus d’informations, voir st.query_params.