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.

Versionshinweise zu den einzelnen Streamlit-Versionen finden Sie in der Streamlit-Dokumentation.

Beschränkungen und Änderungen für alle Laufzeitumgebungen

Die folgenden Beschränkungen gelten für alle Streamlit in Snowflake-Apps, unabhängig von der Laufzeitumgebung:

Beschränkungen und Änderungen, die je nach Laufzeitumgebung variieren

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

Nicht unterstützt

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.

Nicht unterstützt

Wartungsfenster

Nicht anwendbar

Unterliegt dem Snowpark Container Services Wartungsfenster.

Bereitstellung von statischen Dateien

Nicht unterstützt

Unterstützt

Details zur Beschränkung

Nicht unterstützte Streamlit-Features

Die folgenden Streamlit-Features werden in Streamlit in Snowflake nicht vollständig unterstützt:

  • st.set_page_config:

    Die Eigenschaften page_title, page_icon und menu_items des Befehls st.set_page_config werden nicht unterstützt.

  • config.toml-Datei:

    Eine Übersicht der unterstützten und nicht unterstützten Konfigurationsoptionen finden Sie unter Streamlit-Konfiguration.

Laden von externen Ressourcen

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

Von einer Drittanbieterquelle importierte Komponenten unterliegen der für diese Komponente geltenden Lizenz. Sie müssen sicherstellen, dass Ihre Nutzung einer Komponente durch deren Lizenz erlaubt ist.

Snowflake erstellt oder wartet keine Komponenten von Drittanbietern, die Sie möglicherweise in Streamlit in Snowflake importieren. Die Verwendung solcher Komponenten erfolgt auf eigenes Risiko und unterliegt keinen Gewährleistungen, Service Level Agreements oder ähnlichen Garantien seitens Snowflake.

Abfrageparameter

Für st.query_params in |sis|wird ein Präfix streamlit- zu jedem Abfrageparameterschlüssel in der URL hinzugefügt. Dieses Präfix ist nicht enthalten, wenn Sie st.query_params verwenden, um einen Wert abzurufen oder festzulegen.

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

Die Parameter in dieser URL sind über st.query_params als folgende Schlüssel-Wert-Paare zugänglich:

{
   "first_key" : "one",
   "second_key" : "two"
}
Copy

Anzeigen großer Datenmengen

Streamlit-Anwendungen, die in Warehouse-Laufzeiten ausgeführt werden, haben eine 32-MB-Begrenzung für die Größe der zwischen dem Backend und dem Frontend ausgetauschten Nachrichten. Wenn Sie versuchen, mehr als 32 MB Daten mit einem einzigen Streamlit-Befehl, wie st.dataframe, anzuzeigen, tritt der folgende Fehler auf:

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.