Benutzerdefinierter Sleep-Timer für eine Streamlit-App

Unter diesem Thema wird beschrieben, wie Sie einen kundenspezifischen Sleep-Timer für eine Streamlit-App in Streamlit in Snowflake für Warehouses einstellen können.

Sleep-Timer für Streamlit-Apps

Sleep-Timer gelten nur für Streamlit-Apps, die Warehouse-Laufzeiten verwenden. Container-Laufzeiten (Vorschau) sind für Dienste mit langen Ausführungszeiten gedacht und unterstützen keine Sleep-Timer.

Der Sleep-Timer wird mithilfe der Konfigurationsdatei config.toml der Streamlit-App konfiguriert. Wenn Ihre App mit dem Parameter ROOT_LOCATION erstellt wurde, müssen Sie SQL verwenden, um die Konfigurationsdatei mit PUT in Stagingbereich der App zu übertragen. Andernfalls können Sie SQL oder Snowsight-Streamlit in Snowflake-Editor verwenden.

WebSocket-Timeout

Wenn ein Betrachtender eine Streamlit-App öffnet, wird zwischen dem Browser des Betrachtenden und dem Streamlit-Server eine WebSocket-Verbindung hergestellt. Wenn es keinen kundenspezifischen Sleep-Timer gibt, wird die App automatisch angehalten, nachdem es bei der WebSocket-Verbindung aufgrund von Inaktivität zu einem Timeout kommt. Auf Kontoebene beträgt der Standardwert für das WebSocket-Timeout etwa 15 Minuten. Sie können das WebSocket-Timeout für alle Streamlit-Apps Ihres Kontos ändern, indem Sie sich an Snowflake Support wenden.

Wenn Sie einen kundenspezifischen Sleep-Timer einstellen, versucht der Timer, eine App so lange aktiviert zu halten, bis das angegebene Zeitlimit erreicht ist, und versucht dann, die Verbindung ordnungsgemäß zu schließen. Abhängig von den Browsereinstellungen eines Benutzers kann der Zeitmechanismus jedoch durch eine inaktive Browser-Registerkarte angehalten oder verzögert werden. In solchen Fällen unterliegt die App der Einstellung für das WebSocket-Timeout. Wenn Sie also einen kundenspezifischen Sleep-Timer einstellen, der kleiner ist das WebSocket-Timeout, wird Ihre App in einigen Szenarien nicht so schnell automatisch angehalten wie erwartet. Für optimale Ergebnisse stellen Sie Ihr WebSocket-Timeout auf den kleinsten kundenspezifischen Sleep-Timer ein, der von Ihren Apps verwendet wird.

Außerdem werden bei jeder Mausbewegung über einer App sowohl das WebSocket-Timeout als auch der kundenspezifische Sleep-Timer zurückgesetzt.

Festlegen eines kundenspezifischen Sleep-Timers mit Snowsight

Wenn Ihre Streamlit-App eine Warehouse-Laufzeit verwendet, können Sie einen kundenspezifischen Sleep-Timer für das automatische Anhalten einer Streamlit-App einstellen, um die Code-Warehouse-Kosten zu reduzieren. Wenn Ihre App mit dem Parameter ROOT_LOCATION erstellt wurde, müssen Sie anstelle von Snowsight den PUT-Befehl verwenden.

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Projects » Streamlit und dann Ihre Ihre Streamlit-App aus.

  3. Wählen Sie in der rechten oberen Ecke die Option Edit aus.

  4. Wenn .streamlit/config.toml nicht existiert, wählen Sie im Datei-Explorer auf der linken Seite die Option Plus-Symbol » Create new file. Geben Sie .streamlit/config.toml ein und wählen Sie Create aus.

  5. Navigieren Sie im Datei-Explorer auf der linken Seite zu .streamlit/config.toml.

  6. Legen Sie im Datei-Editor den Wert streamlitSleepTimeoutMinutes in der Tabelle [snowflake.sleep] fest.

    Wenn Sie beispielsweise möchten, dass die Streamlit-App nach 8 Minuten automatisch angehalten wird, fügen Sie den folgenden Text zur config.toml-Datei hinzu:

    [snowflake]
    [snowflake.sleep]
    streamlitSleepTimeoutMinutes = 8
    
    Copy

Festlegen eines kundenspezifischen Sleep-Timers mit dem PUT-Befehl

Wenn Ihre Streamlit-App mit dem Parameter ROOT_LOCATION erstellt wurde, müssen Sie den PUT-Befehl verwenden, um die Konfigurationsdatei Ihrer App zu ändern. Wenn Ihre Streamlit-App mit dem Parameter FROM erstellt wurde, können Sie entweder den PUT-Befehl oder Snowsight zum Ändern der Konfigurationsdatei Ihrer App verwenden.

  1. Erstellen oder ändern Sie die config.toml-Datei auf Ihrem lokalen Computer, um streamlitSleepTimeoutMinutes in der Tabelle [snowflake.sleep] festzulegen.

    Wenn Sie beispielsweise möchten, dass die Streamlit-App nach 8 Minuten automatisch angehalten wird, fügen Sie den folgenden Text zu Ihrer config.toml-Datei hinzu:

    [snowflake]
    [snowflake.sleep]
    streamlitSleepTimeoutMinutes = 8
    
    Copy
  2. Laden Sie die config.toml-Datei in den Stagingbereich Ihrer App hoch.

    Wenn Ihre App mit dem Parameter ROOT_LOCATION erstellt wurde, führen Sie den folgenden Befehl aus:

    PUT file:///<path_to_your_local_directory>/config.toml @streamlit_db.streamlit_schema.streamlit_stage/.streamlit/ overwrite=true auto_compress=false;
    
    Copy

    Wenn Ihre App mit dem Parameter FROM erstellt wurde, führen Sie den folgenden Befehl aus:

    PUT file:///<path_to_your_local_directory>/config.toml snow://streamlit/streamlit_db.streamlit_schema.streamlit_stage/versions/live/.streamlit/ overwrite=true auto_compress=false;
    
    Copy

Weitere Informationen zur Arbeit mit Streamlit-Dateien finden Sie unter Streamlit-Apps mit SQL erstellen und bereitstellen.

Bemerkung

Sie können streamlitSleepTimeoutMinutes auf einen beliebigen Wert zwischen 5 und 240 Minuten einstellen.

Wenn Sie die Konfigurationsdatei nicht erstellen, um den Timer festzulegen, beträgt die Standardzeit für das automatische Anhalten 15 Minuten.