Understanding Streamlit's client-server architecture

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

当你执行命令 streamlit run your_app.py 时,你的电脑会使用 Python 启动一个 Streamlit 服务器。这个服务器是你应用的核心,并为所有查看你应用的用户执行计算。无论用户是通过本地网络还是互联网查看你的应用,Streamlit 服务器都运行在通过 streamlit run 初始化应用的那台机器上。运行 Streamlit 服务器的机器也被称为主机。

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

在构建您的Streamlit应用程序时,请记住以下注意事项:

  • 运行或托管您的Streamlit应用程序的计算机负责为所有用户提供运行应用程序所需的计算和存储资源,并且必须适当调整大小以处理并发用户。
  • 您的应用程序将无法访问用户的文件、目录或操作系统。您的应用程序只能处理用户通过st.file_uploader等小部件上传到您的应用程序的特定文件。
  • 如果你的应用程序与任何外围设备(如摄像头)通信,你必须使用Streamlit命令或自定义组件,这些命令或组件将通过用户的浏览器访问这些设备,并在客户端(前端)和服务器(后端)之间正确通信。
  • 如果你的应用程序打开或使用Python之外的任何程序或进程,它们将在服务器上运行。例如,你可能想使用webrowser为用户打开浏览器,但在通过网络查看你的应用程序时,这将无法按预期工作;它将在Streamlit服务器上打开一个浏览器,用户看不到。
forum

还有问题吗?

我们的 论坛 充满了有用的信息和Streamlit专家。