Einschränkungen und Änderungen der Bibliothek¶
Dieses Thema beschreibt Einschränkungen und Änderungen im Verhalten von Features, wenn ein Streamlit-Feature in Snowflake anders funktioniert als in der Open-Source-Bibliothek.
To view release notes for each Streamlit version, see Streamlit documentation.
Limitations and changes for all runtimes¶
Die folgenden Beschränkungen gelten für alle Streamlit in Snowflake-Apps, unabhängig von der Laufzeitumgebung:
Kundenspezifische Komponenten mit externen Skripten
Using external stages isn’t supported.
Replication isn’t supported.
Using
.sofiles isn’t supported.
Limitations and changes that vary by runtime¶
Die folgende Tabelle vergleicht die Beschränkungen, die sich zwischen den Laufzeiten von Warehouses und den Laufzeiten von Containern unterscheiden (Vorschau). Weitere Informationen zu Laufzeitumgebungen finden Sie unter Laufzeitumgebungen für Streamlit-Apps.
Einschränkungen |
Warehouse-Laufzeit |
Container-Laufzeit (Vorschau): |
|---|---|---|
3.9, 3.10, 3.11 |
Nur 3.11 |
|
1.22+ (begrenzte Auswahl) |
1.50+ (jede Version, einschließlich |
|
Not supported |
Unterstützt |
|
32 MB |
Konfigurierbar |
|
200 MB |
Konfigurierbar |
|
Erfordert die Anerkennung der Bedingungen für externe Angebote. |
Unterliegt nicht den Bedingungen für externe Angebote. |
|
Einzelsitzungs-Caching. Zwischengespeicherte Werte können nicht von Sitzungen gemeinsam genutzt werden. |
Vollständig unterstützt. Zwischengespeicherte Werte werden für alle Betrachtersitzungen freigegeben, es sei denn, Sie verwenden im Cache-Decorator den Sitzungsbereich. |
|
Wird in CREATE STREAMLIT als veralteter Parameter unterstützt. |
Not supported |
|
Wartungsfenster |
Nicht anwendbar |
Unterliegt dem Snowpark Container Services Wartungsfenster. |
Bereitstellung von statischen Dateien |
Not supported |
Unterstützt |
Details zur Beschränkung¶
Nicht unterstützte Streamlit-Features¶
The following Streamlit features are not fully supported in Streamlit in Snowflake:
-
The
page_title,page_icon, andmenu_itemsproperties of thest.set_page_configcommand aren’t supported. config.toml-Datei:Eine Übersicht der unterstützten und nicht unterstützten Konfigurationsoptionen finden Sie unter Streamlit-Konfiguration.
Loading external resources¶
Alle Streamlit in Snowflake-Anwendungen laufen innerhalb der Content Security Policy (CSP), die einschränkt, welche Ressourcen geladen werden können. Die CSP blockiert das Laden von Code von externen Domains und das Einbetten externer Inhalte in iFrames. Es blockiert auch Front-End-Aufrufe, die allgemein als unsicher gelten, wie z. B. eval(). Weitere Informationen über CSP finden Sie unter Inhaltssicherheitsrichtlinie.
Der folgende Code wird beispielsweise ohne einen Python-Fehler ausgeführt, aber das Skript wird im Browser nicht geladen oder ausgeführt:
# This won't work
st.html(
"<script src="http://www.example.com/example.js"></script>",
unsafe_allow_javascript=True
)
Bemerkung
App-Entwickler sind für die Sicherheitsprüfungen und die Software-Lieferkette von Streamlit in Snowflake-App-Code gemäß dem Snowflake’s Shared Responsibility Model verantwortlich.
Kundenspezifische Komponenten¶
Als Konsequenz der CSP können benutzerdefinierte Komponenten keine Skripte von externen Domänen in Laufzeiten von Warehouses und Containern laden. Da paketbasierte Komponenten ein Asset-Verzeichnis verwenden, um ihren statischen Inhalt bereitzustellen, gelten die folgenden Unterschiede:
In Warehouse-Laufzeiten werden paketbasierte v2-Komponenten, die ein Asset-Verzeichnis verwenden, nicht unterstützt.
In Container-Laufzeitumgebungen werden paketbasierte v2-Komponenten vollständig unterstützt.
Um eine kundenspezifische v2-Komponente in einer Warehouse-Laufzeit zu verwenden, muss sie mit Inline-HTML, CSS und JavaScript definiert werden.
Bemerkung
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.
Abfrageparameter¶
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.
Betrachten Sie beispielsweise die folgende URL:
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"
}
Anzeigen großer Datenmengen¶
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
Um dieses Limit zu vermeiden, sollten Sie Ihre Streamlit-App so gestalten, dass sie Daten in kleineren Schritten als 32 MB anzeigen. Es gibt keine explizite Begrenzung für die Größe einer Abfrage, die Sie ausführen können, oder die Menge an Daten, die im Arbeitsspeicher vorhanden sein kann.
In Container-Laufzeiten ist dieses Limit standardmäßig 200 MB und kann durch Einstellen der Streamlit-Konfigurationsoption server.maxMessageSize geändert werden. Die Größe der Nachricht darf jedoch die Kapazität des Arbeitsspeichers des Containers nicht überschreiten. Wenn Sie größere Meldungen zulassen, könnte dies die Speicherbeschränkung des Containers überschreiten, insbesondere wenn gleichzeitige Betrachter vorhanden sind.
Datei-Uploads¶
Die Standardbeschränkung der Dateigröße von st.file_uploader und st.chat_input ist 200 MB. In Warehouse-Laufzeiten ist dies nicht konfigurierbar. In Container-Laufzeiten kann dieses Limit durch Einstellen der Streamlit-Konfigurationsoption server.maxUploadSize geändert werden. Die Dateigröße darf jedoch die Kapazität des Arbeitsspeichers des Containers nicht überschreiten. Wenn Sie größere Dateien zulassen, könnte dies die Speicherbeschränkung des Containers überschreiten, insbesondere wenn gleichzeitige Betrachter vorhanden sind.
Bei größeren Dateien sollten Sie erwägen, die Daten in kleineren Batches zu verarbeiten oder alternative Methoden zum Hochladen zu verwenden.
Mapbox und Carto¶
Mapbox und Carto stellen Kartenkacheln bereit, wenn Sie die Streamlit-Befehle st.map oder st.pydeck_chart verwenden.
In Warehouse-Laufzeitumgebungen, die ihre Pakete mit conda verwalten, sind Mapbox und Carto Anwendungen von Drittanbietern, die den Bedingungen für externe Angebote von Snowflake unterliegen.
Um diese Befehle in den Warehouse-Laufzeiten verwenden zu können, müssen Sie die Bedingungen für externe Angebote anerkennen. Für Container-Laufzeiten ist diese Bestätigung nicht erforderlich.
Caching¶
Das Caching wird in Warehouse-Laufzeiten teilweise und in Container-Laufzeiten vollständig unterstützt.
In Warehouse-Laufzeiten ist das Zwischenspeichern auf das Einzelsitzungs-Caching beschränkt. Zwischengespeicherte Werte können nicht von Sitzungen gemeinsam genutzt werden. In Container-Laufzeitumgebungen wird das Caching vollständig unterstützt. Die zwischengespeicherten Werte werden für alle Betrachtersitzungen gemeinsam genutzt.