Verwalten der Kosten für Streamlit in Snowflake¶
Unter diesem Thema werden die Abrechnungserwägungen für Streamlit in Snowflake erläutert.
Hinweise zur Abrechnung für Streamlit in Snowflake¶
Die Streamlit in Snowflake-Abrechnung erfolgt auf Basis der Laufzeitumgebung und des Abfrage-Warehouses der App. Die Laufzeitumgebung führt den Python-Code in Ihrer Streamlit-App aus und kann entweder ein Container oder ein Warehouse sein. Das Abfrage-Warehouse führt beliebige SQL-Abfragen innerhalb des Codes Ihrer App aus.
Warehouse-Abfrage¶
Wenn der Code Ihrer App SQL-Abfragen ausführt, verwenden diese Abfragen das Abfrage-Warehouse der App. Snowflake setzt das Abfrage-Warehouse entsprechend seiner eigenen Werte für AUTO_RESUME und AUTO_SUSPEND fort bzw. setzt es aus.
Container-Laufzeit¶
If your Streamlit app uses a container runtime, you are billed for the usage of the underlying Snowpark Container Services compute pool. In this case, the Streamlit app is a long-running service. The Streamlit server runs continuously on a node of the compute pool, allowing viewers to quickly access the app. Concurrent viewers connect to a single Streamlit server. Only a single app can run on a node in the compute pool; a Streamlit app takes an entire node.
Nach drei Tagen Inaktivität des Betrachters endet der Streamlit-Serverprozess, und Snowflake setzt den Computepool gemäß seinem eigenen AUTO_SUSPEND-Wert aus. Wenn Sie versuchen, eine Sitzung drei Tage lang aufrechtzuerhalten, ohne dass sich ein neuer Betrachter verbindet, wird die App wahrscheinlich ausgesetzt. Es ist eine bewährte Methode, zeitintensive Berechnungen auf einen anderen Dienst zu verschieben. Weitere Informationen zur Computepool-Abrechnung finden Sie unter Erläuterungen zu den Computekosten.
Warehouse-Laufzeit¶
Wenn Ihre App eine Warehouse-Laufzeit verwendet, setzt Snowflake das Code-Warehouse der App fort, wenn jemand die App aufruft. Jedes Mal, wenn ein Betrachtender eine Verbindung zur App herstellt, wird ein neuer Streamlit-Serverprozess im Code-Warehouse gestartet und eine WebSocket-Verbindung hergestellt. Gleichzeitige Betrachtende verbinden sich jeweils mit einem eigenen Streamlit-Server, der in demselben Code-Warehouse läuft.
Eine WebSocket-Verbindung hält das Code-Warehouse aktiv und läuft etwa 15 Minuten nach der letzten Aktivität des zugehörigen Betrachtenden ab. Dies kann jedoch durch die Browsereinstellungen und die Aktivität des Betrachtenden beeinflusst werden. Mausbewegungen in der App zählen als Aktivität und sorgen dafür, dass die WebSocket-Verbindung bestehen bleibt. Sie können den WebSocket-Timeout-Wert für Ihr Konto ändern, indem Sie sich an den Snowflake Support wenden.
Für das Code-Warehouse wird die Zeit in Rechnung gestellt, in der es aktiv ist. Um Credits zu sparen, können Sie eine der folgenden Optionen nutzen:
Setzen Sie die App manuell über Snowsight aus.
Schließen Sie alle Browser-Registerkarten, auf denen die App ausgeführt wird, oder verlassen Sie die App. Dadurch wird die WebSocket-Verbindung beendet und ermöglicht, dass das Warehouse automatisch angehalten wird.
Stellen Sie einen benutzerdefinierten Sleep-Timer für die App ein. Dadurch wird das Warehouse nach einer bestimmten Zeit der Inaktivität automatisch ausgesetzt. Weitere Informationen dazu finden Sie unter Benutzerdefinierter Sleep-Timer für eine Streamlit-App.
Richtlinien für die Auswahl eines Warehouses finden Sie unter Richtlinien für die Auswahl von Ressourcen in Streamlit in Snowflake.