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

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

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

Python 后端(服务器)

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

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

浏览器前端(客户端)

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

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

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

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

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

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

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

理解 Streamlit 的客户端-服务器架构的更多相关文章

  1. MySQL1:客户端/服务器架构

    一.MySQL的客户端/服务器架构 前言 之前对MySQL的认知只限于会写些SQL,本篇算是笔记,记录和整理下自己对MySQL不熟悉的地方. 大致逻辑: MySQL的服务器程序直接和我们存储的数据打交 ...

  2. [网络编程之客户端/服务器架构,互联网通信协议,TCP协议]

    [网络编程之客户端/服务器架构,互联网通信协议,TCP协议] 引子 网络编程 客户端/服务器架构 互联网通信协议 互联网的本质就是一系列的网络协议 OSI七层协议 tcp/ip五层模型 客户端/服务器 ...

  3. 无服务器架构(Faas/Serverless)

    摘要无服务器架构(Faas/Serverless),是软件架构领域的热门话题. AWS,Google Cloud和Azure - 在无服务器上投入了大量资金,已经在看到了大量专门针对Faas/Serv ...

  4. 高性能高并发服务器架构设计探究——以flamigo服务器代码为例

    这篇文章我们将介绍服务器的开发,并从多个方面探究如何开发一款高性能高并发的服务器程序. 所谓高性能就是服务器能流畅地处理各个客户端的连接并尽量低延迟地应答客户端的请求:所谓高并发,指的是服务器可以同时 ...

  5. 同一世界服务器架构--Erlang游戏服务器

        Erlang最大的优点是方便,很多基础功能都已经集成到Erlang语言中.之前用C++写服务器的时候,管理TCP连接很繁琐,需要写一大堆代码来实现.底层的框架需要写很多代码实现,这样既浪费时间 ...

  6. Serverless无服务器架构详解

    本文对Serverless架构的基础概念.具体产品.应用场景.工作原理进行详细解析. 基础概念 Serverless: 无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生 ...

  7. 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)

    Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...

  8. [转]MMORPG服务器架构

    MMORPG服务器架构 一.摘要 1.网络游戏MMORPG整体服务器框架,包括早期,中期,当前的一些主流架构2.网络游戏网络层,包括网络协议,IO模型,网络框架,消息编码等.3.网络游戏的场景管理,A ...

  9. 高扩展的基于NIO的服务器架构

    当你考虑写一个扩展性良好的基于Java的服务器时,相信你会毫不犹豫地使用Java的NIO包.为了确保你的服务器能够健壮.稳定地运行,你可能会花大量的时间阅读博客和教程来了解线程同步的NIO selec ...

  10. Windows平台网站图片服务器架构的演进[转]

    构建在Windows平台之上的网站,往往会被业内众多架构师认为很“保守”.很大部分原因,是由于微软技术体系的封闭和部分技术人员的短视造成 的.由于长期缺乏开源支持,所以只能“闭门造车”,这样很容易形成 ...

随机推荐

  1. vue属性/子属性监听watch的几种方法

    特殊字符法 特殊字符+deep法 直接deep法 常规法 直接用如下代码示例吧: data(){ return { goBackHeader:'添加排班', scheduleForm:{ schedu ...

  2. 9.15CSP-S2022

    寄了,51分 单项选择 ok real不知道意思 ok 快排最慢可到达O(n2)O(n^2)O(n2) 数据有误不影响排序,删了就行 小端右,大端左,B 直接画即可(艹,算错了 ok ok 艹,组合计 ...

  3. Web前端入门第 44 问:CSS 循环动画 animation 效果演示

    相关属性 @keyframes 定义动画的关键帧序列 animation-name 指定 @keyframes 动画的名称 animation-duration 动画单次循环的持续时间(必需属性,否则 ...

  4. Lucas 定理简单证明

    前言 Oi wiki 和网上博客的证明都没完全看懂,最后还是自己推出来的..这里记录一下思路. Lucas 定理 对于质数 \(p\),$${n\choose m}\bmod p={\lfloor n ...

  5. 工具 | Hacking

    0x00 简介 Hacking是一款包含多种渗透测试功能的脚本. 下载地址: Hacking下载:Hacking下载 0x01 功能说明 Brute Force DDos Attack NMap Po ...

  6. P11071 「QMSOI R1」 Distorted Fate题解

    题意: 给定一个序列,给定两种操作: 将一个区间异或上一个给定的值. 给定 \(l,r\) 求 \[{\large (\sum_{i=l}^r\bigcup_{j=l}^i A_j) \bmod 2^ ...

  7. ASP.NET Core之由配置系统与创建app所想到的

    先看文件配置的代码: ConfigurationBuilder configBuilder=new ConfigurationBuiler();//典型的创建者模式 configBuilder.Add ...

  8. Windows平台调试器原理与编写05.内存断点

    https://www.bpsend.net/thread-274-1-3.html 内存断点 访问断点 写入断点 内存写入断点 简介:当被调试进程访问,读或写指定内存的时候,程序能够断下来. 思考1 ...

  9. JVM 使用jstat分析系统的垃圾回收情况

    jstat -gcutil 输出结果分析_助你了解jvm命令,查找JVM堆栈信息,分析性能问题.下面介绍一下jstat命令: jstat:虚拟机统计信息监视工具(JVM Statistics Moni ...

  10. 利用堆排序和分治法求解千万级数据排序的Top K问题—百度面试

    目录 问题描述 问题解析 第一步:查询次数统计 第二步:找出Top 10 算法一:排序 算法二:部分排序 算法三:堆排序 1.构造初始堆 2.首尾交换,断尾重构 3.迭代执行第二步 算法四:分治法 小 ...