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:

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):

Python-Versionen

3.9, 3.10, 3.11

Nur 3.11

Streamlit-Versionen

1.22+ (begrenzte Auswahl)

1.50+ (jede Version, einschließlich streamlit-nightly-Versionen)

Paketbasierte v2-Komponenten

Not supported

Unterstützt

Anzeigen großer Datenmengen

32 MB

Konfigurierbar

Datei-Uploads

200 MB

Konfigurierbar

Mapbox und Carto

Erfordert die Anerkennung der Bedingungen für externe Angebote.

Unterliegt nicht den Bedingungen für externe Angebote.

Caching

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.

ROOT_LOCATION-Parameter

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:

  • st.set_page_config:

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

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

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.