为 Streamlit 应用程序自定义睡眠计时器¶
本主题介绍如何在 Streamlit in Snowflake 的仓库上,为 Streamlit 应用设置自定义休眠定时器。
关于 Streamlit 应用程序的睡眠计时器¶
睡眠计时器仅适用于使用仓库运行时的 Streamlit 应用程序。容器运行时(预览版)适用于长时间运行的服务,不支持休眠定时器。
休眠定时器通过 Streamlit 应用的 config.toml 配置文件进行设置。如果您的应用是通过 ROOT_LOCATION 参数创建的,则必须使用 SQL 在应用的暂存区位置对配置文件进行 PUT 操作。否则,您可以使用 SQL 或 Snowsight Streamlit in Snowflake 编辑器。
WebSocket 超时¶
当查看者打开 Streamlit 应用时,查看者的浏览器与 Streamlit 服务器之间会建立一个 WebSocket 连接。如果未设置自定义休眠定时器,应用将在 WebSocket 连接因无活动超时后自动挂起。在账户级别,默认 WebSocket 超时时间约为 15 分钟。您可以通过联系 Snowflake 支持部门,更改账户的所有 Streamlit 应用程序的 WebSocket 超时。
当您设置自定义休眠定时器时,该定时器会尝试使应用保持活动状态直至达到指定时限,随后尝试优雅地关闭连接。然而,根据用户的浏览器设置,非活动状态的浏览器标签页可能会暂停或延迟此计时机制。在此类情况下,应用仍将受 WebSocket 超时设置约束。因此,如果您设置的自定义休眠定时器短于 WebSocket 超时时长,在某些场景下您的应用可能不会如预期般快速自动挂起。为获得最佳效果,请将 WebSocket 超时设置为与您应用所使用的最短自定义休眠定时器时长相等。
此外,应用界面上任何鼠标移动都将同时重置 WebSocket 超时和自定义休眠定时器。
使用 Snowsight 设置自定义睡眠计时器¶
如果您的 Streamlit 应用使用仓库运行时,为降低代码仓库成本,可以为 Streamlit 应用设置自定义休眠定时器以实现自动暂停。如果您的应用程序是使用 ROOT_LOCATION 参数,则必须使用 PUT 命令而不是 Snowsight。
登录 Snowsight。
在导航菜单中选择 Projects » Streamlit,然后选择您的 Streamlit 应用程序。
选择右上角的 Edit。
如果
.streamlit/config.toml不存在,在左侧的文件资源管理器中,选择
» Create new file. Enter .streamlit/config.toml,然后选择 Create。在左侧的文件资源管理器中,导航到
.streamlit/config.toml。在文件编辑器中,设置
[snowflake.sleep]表中的streamlitSleepTimeoutMinutes值。例如,如果希望 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 分钟。