理解 Streamlit 的客户端-服务器架构

Streamlit 应用程序具有客户端-服务器结构。

您应用程序的 Python 后端即为服务器。您通过浏览器看到的前端即为客户端。

当您在本地开发应用程序时,您的计算机同时运行服务器和客户端。如果有人通过本地或全球网络查看您的应用程序,服务器和客户端将运行在不同的机器上。如果您打算分享或部署您的应用程序,了解这种客户端-服务器结构非常重要,以避免常见的问题。

Python 后端(服务器)

当您执行 streamlit run your_app.py 命令时,您的计算机会使用 Python 来启动一个 Streamlit 服务器。

这个服务器是您的应用程序的核心部分,负责为所有查看您的应用程序的用户执行计算任务。无论用户是在本地网络还是通过互联网查看您的应用程序,Streamlit 服务器都在初始化应用程序的那台机器上运行,即通过streamlit run命令启动的应用程序所在的机器。运行 Streamlit 服务器的这台机器也被称为主机。

浏览器前端(客户端)

当有人通过浏览器访问您的应用程序时,他们的设备就是 Streamlit 客户端。当您在运行或开发应用程序的同一台计算机上查看您的应用程序时,服务器和客户端会恰好在同一台机器上运行。然而,当用户通过本地网络或互联网访问您的应用程序时,客户端运行的机器与服务器不同。

服务器-客户端对应用程序设计的影响

在构建您的 Streamlit 应用程序时,请务必考虑以下几点:

  • 运行或托管您的 Streamlit 应用程序的计算机负责为所有用户提供运行应用程序所需的计算能力和存储空间,并且其规模必须适当以处理并发用户。

  • 您的应用程序无法访问用户的文件、目录或操作系统。您的应用程序只能与用户通过诸如 st.file_uploader 这样的小部件上传到您的应用程序的特定文件一起工作。

  • 如果您的应用程序与任何外围设备(如摄像头)进行通信,您必须使用 Streamlit 命令或自定义组件,这些组件将通过用户的浏览器访问这些设备,并在客户端(前端)和服务器(后端)之间正确进行通信。

  • 如果您的应用程序打开或使用 Python 之外的任何程序或进程,它们将在服务器上运行。例如,您可能希望使用 webrowser 为用户打开一个浏览器,但在通过网络查看您的应用程序时,这将无法按预期工作;它将在 Streamlit 服务器上打开浏览器,而用户无法看到。

posted @ 2025-07-15 00:29  GOKORURI  阅读(363)  评论(0)    收藏  举报