编辑已部署的 Streamlit 应用程序

在 Snowsight 中部署 Streamlit 应用程序后,您可以使用 Snowsight 或 SQL 命令编辑应用程序代码和依赖项。更改生效的方式取决于运行时环境以及应用程序的创建方式。

备注

使用 ROOT_LOCATION 参数创建的应用程序(旧版应用)编辑功能有限,建议转换为使用 FROM 参数以获得完整功能。有关更多信息,请参阅 了解不同类型的 Streamlit 对象

本页仅涵盖使用 FROM 参数创建的应用程序。

当多人同时编辑同一应用程序时,容器和仓库两种运行时环境均可能发生竞争条件。有关详细信息和最佳实践,请参阅 协作编辑注意事项

编辑方法

您可以通过 Snowsight 的内置浏览器编辑器编辑应用程序,或使用 SQL 命令上传文件进行编辑。

  1. 登录 Snowsight

  2. 在导航菜单中选择 Projects » Streamlit,然后选择您的 Streamlit 应用程序。

  3. 选择右上角的 Edit

  4. 在文件资源管理器中,选择或创建要编辑的新文件:

    • 若要编辑现有文件,请在文件资源管理器中选中该文件。

    • 要创建新文件,请选择 +`(添加) |raa| :ui:`Create new file,输入文件名,然后选择 Create。文件名中可包含子目录,例如 subdir/new_file.py

    • 要从本地计算机上传文件,请选择 +`(添加)|raa| :ui:`Upload file,选择要上传的文件,根据需要修改文件名和路径,然后选择 Upload

  5. 在编辑器窗格中进行修改。

    修改内容将在数秒后自动保存至应用的源位置。

  6. 可选:选择 Run

    如果您不想等待数秒让修改自动保存,可选择 Run 以立即复制更改内容。

  7. 如果您的应用程序使用仓库运行时,查看者需选择 Run 才能将更改复制到其应用程序实例。如果您的应用程序使用容器运行时,更改将直接保存至实时应用程序的源位置,所有查看者下次与应用程序交互时即可看到更新内容。

运行时行为差异

您的编辑内容生效方式取决于应用程序的运行时类型。

容器运行时

编辑容器运行时应用程序时:

  • 对应用程序源代码的更改会直接推送到实时应用程序。

  • 当前查看者在下次与应用程序交互并触发重新运行时会看到更新。(Streamlit 配置选项 (https://docs.streamlit.io/develop/api-reference/configuration/config.toml#server) server.runOnSave 默认处于禁用状态。)

  • 查看者可使用 Run 按钮,但无需通过该按钮即可将更改传播到当前查看或编辑会话。

  • 所有用户都会看到相同的应用程序实例,且更改会立即生效。

尽管实时应用程序在查看者之间共享,但 Snowsight 编辑器中的源代码视图并非共享状态。因此,当多人同时编辑应用程序时,容器运行时的应用程序仍可能面临竞争条件。有关详细信息和最佳实践,请参阅 协作编辑注意事项

仓库运行时

编辑仓库运行时应用程序时:

  • 每个查看者的实例启动时会复制应用程序源代码。

  • 当前查看者必须选择 Run 才能复制其会话期间对源代码所做的更新。

  • 即使是进行编辑的人员也必须点击 Run 才能在预览窗格中看到更改。

  • 每位查看者将获得各自独立的应用程序实例。

协作编辑注意事项

当多人同时编辑同一应用程序时,请注意潜在的冲突。如果多人同时编辑应用程序,无论是容器运行时还是仓库运行时的应用程序,均可能面临以下竞争条件:

竞态条件

Snowsight 编辑器的工作原理如下:

  • 当您打开编辑器窗格或使用文件导航器打开文件时,当前源代码会复制到编辑器窗格中。

  • 如果您在编辑器窗格中查看文件,该文件不会在其他人进行更改时自动更新。

  • 如果您在编辑器窗格中进行修改,自动保存功能将覆盖自您打开编辑器后由其他人所做的任何更改。

  • 系统不会自动合并存在冲突的编辑内容。

例如,以下操作顺序可能导致更改丢失:

  1. 开发者 A 于 2:00 PM 打开编辑器。

  2. 开发者 B 于 2:15 PM 进行修改并保存。

  3. 开发者 A 于 2:30 PM 保存修改。

  4. 开发者 B 的更改将丢失(被开发者 A 的更改覆盖)。

团队编辑的最佳实践

为避免团队协作时发生冲突,建议采取以下措施:

  • 在进行编辑前与团队成员充分沟通。

  • 将源文件存储在 Git 存储库中,并从此处部署代码。

  • 使用独立的开发应用程序来测试更改。

  • 在开始编辑前,重新加载 Snowsight 编辑器以立即获取最新版本。

语言: 中文