Streamlitアプリのカスタムスリープタイマー

このトピックでは、ウェアハウスの Streamlit in Snowflake でStreamlitアプリのカスタムスリープタイマーを設定する方法について説明します。

Streamlitアプリのスリープタイマーについて

スリープタイマーは、ウェアハウスランタイムを使用するStreamlitアプリにのみ適用されます。コンテナランタイム(プレビュー)は、長時間実行されるサービスを目的としており、スリープタイマーをサポートしていません。

スリープタイマーは、Streamlitアプリの config.toml 構成ファイルを使用して構成されます。アプリが ROOT_LOCATION パラメーターで作成された場合、SQL を使用して構成ファイルをアプリのステージの場所に PUT する必要があります。それ以外の場合は、 SQL または |sf-web-interface||sis| エディターを使用できます。

WebSocket タイムアウト

ビューアーがStreamlitアプリを開くと、ビューアーのブラウザとStreamlitサーバーの間で WebSocket 接続が確立されます。カスタムスリープタイマーがない場合、非アクティブのために WebSocket 接続がタイムアウトすると、アプリは自動的に一時停止します。アカウントレベルでは、デフォルトの WebSocket タイムアウトは約15分です。Snowflakeサポートに連絡して、すべてのStreamlitアプリのアカウントの WebSocket タイムアウトを変更できます。

カスタムスリープタイマーを設定すると、タイマーは指定された時間制限に達するまでアプリを起動させようとし、その後、接続を正常に閉じようとします。ただし、ユーザーのブラウザー設定によっては、非アクティブなブラウザのタブによってタイミングメカニズムが一時停止または遅延する場合があります。このような場合、アプリは WebSocket タイムアウト設定の対象となります。したがって、 WebSocket タイムアウトよりも短いカスタムスリープタイマーを設定すると、シナリオによっては、アプリが期待ほど迅速に一時停止しない場合があります。最良の結果を得るには、 WebSocket タイムアウトをアプリで使用される最小のカスタムスリープタイマーと同じに設定します。

さらに、アプリ上でマウスを操作すると、両方の WebSocket タイムアウトとカスタムスリープタイマーがリセットされます。

Snowsightを使用したカスタムスリープタイマーの設定

Streamlitアプリがウェアハウスランタイムを使用している場合、コードウェアハウスのコストを削減するために、Streamlitアプリを自動的に一時停止するカスタムスリープタイマーを設定できます。アプリが ROOT_LOCATION パラメーターで作成された場合、Snowsightの代わりに PUT コマンドをを使用する必要があります。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで、 Projects » Streamlit を選択し、Streamlitアプリを選択します。

  3. 右上隅の Edit を選択します。

  4. .streamlit/config.toml が存在しない場合、左側のファイルエクスプローラーで、 |sf-plus-icon-button||raa|Create new file. を選択し .streamlit/config.toml を入力した後で Create を選択します。

  5. 左側のファイルエクスプローラーで、 .streamlit/config.toml に移動します。

  6. ファイルエディターで、 streamlitSleepTimeoutMinutes 内の [snowflake.sleep] テーブルの値を設定します。

    たとえば、Streamlitアプリを8分後に自動的に一時停止させる場合は、 config.toml ファイルに次のテキストを追加します。

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

PUT コマンドを使用したカスタムスリープタイマーの設定

Streamlitアプリが ROOT_LOCATION パラメーターで作成された場合、PUT コマンドを使用してアプリの構成ファイルを変更する必要があります。Streamlitアプリが FROM パラメーターで作成された場合、 PUT コマンドまたは Snowsight を使用してアプリの構成ファイルを変更します。

  1. ローカルマシンで config.toml ファイルを作成または変更して、 [snowflake.sleep] テーブルに streamlitSleepTimeoutMinutes を設定します。

    たとえば、Streamlitアプリを8分後に自動的に一時停止させる場合は、 config.toml ファイルに次のテキストを含めます。

    [snowflake]
    [snowflake.sleep]
    streamlitSleepTimeoutMinutes = 8
    
    Copy
  2. アプリのステージの場所に config.toml ファイルをアップロードします。

    アプリが ROOT_LOCATION パラメーターで作成された場合、次のコマンドを実行します。

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

    アプリが FROM パラメーターで作成された場合、次のコマンドを実行します。

    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

Streamlit ファイルの操作に関する情報は、 SQL を使用してStreamlitアプリを作成し、デプロイします。 を参照してください。

注釈

streamlitSleepTimeoutMinutes は、5分から240分の間で任意の値を設定できます。

タイマーを指定するための構成ファイルを作成しない場合、デフォルトの自動一時停止時間は15分になります。