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 コマンドをを使用する必要があります。
Snowsight にサインインします。
ナビゲーションメニューで、 Projects » Streamlit を選択し、Streamlitアプリを選択します。
右上隅の Edit を選択します。
.streamlit/config.tomlが存在しない場合、左側のファイルエクスプローラーで、 |sf-plus-icon-button||raa|Create new file. を選択し.streamlit/config.tomlを入力した後で Create を選択します。左側のファイルエクスプローラーで、
.streamlit/config.tomlに移動します。ファイルエディターで、
streamlitSleepTimeoutMinutes内の[snowflake.sleep]テーブルの値を設定します。たとえば、Streamlitアプリを8分後に自動的に一時停止させる場合は、
config.tomlファイルに次のテキストを追加します。[snowflake] [snowflake.sleep] streamlitSleepTimeoutMinutes = 8
PUT コマンドを使用したカスタムスリープタイマーの設定¶
Streamlitアプリが ROOT_LOCATION パラメーターで作成された場合、PUT コマンドを使用してアプリの構成ファイルを変更する必要があります。Streamlitアプリが FROM パラメーターで作成された場合、 PUT コマンドまたは Snowsight を使用してアプリの構成ファイルを変更します。
ローカルマシンで
config.tomlファイルを作成または変更して、[snowflake.sleep]テーブルにstreamlitSleepTimeoutMinutesを設定します。たとえば、Streamlitアプリを8分後に自動的に一時停止させる場合は、
config.tomlファイルに次のテキストを含めます。[snowflake] [snowflake.sleep] streamlitSleepTimeoutMinutes = 8
アプリのステージの場所に
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;
アプリが 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;
Streamlit ファイルの操作に関する情報は、 SQL を使用してStreamlitアプリを作成し、デプロイします。 を参照してください。
注釈
streamlitSleepTimeoutMinutes は、5分から240分の間で任意の値を設定できます。
タイマーを指定するための構成ファイルを作成しない場合、デフォルトの自動一時停止時間は15分になります。