本文将探索Streamsync:前端无代码,后端使用Python。

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

Streamsync是一个用于创建数据应用程序的全新开源框架。它允许你使用可视化编辑器构建用户界面,同时在后端保留Python的强大功能。所有这些都包含在一个可通过pip安装的软件包中。

Streamsync的可视化编辑器,Streamsync Builder。

一、不断发展的数据应用程序生态系统

从高层次上来看,Streamsync与竞争对手进行比较时,在两个方面的设计脱颖而出。

1.1 快速。响应时间更短。

与Streamlit相比,Streamsync可以实现显著降低的响应时间。 它只运行一次用户脚本。 它使用WebSockets来保持前端和后端状态同步。

1.2 整洁。可以尽情享受创建过程;最终结果从里到外都美观大方。

Streamsync使用以状态驱动的响应式用户界面。数据应用程序的用户界面严格与其逻辑分离。 它使用一套一致但可定制的用户界面设计系统。 无需缓存,所有内容都保留在内存中。可以使用全局变量和模块属性来存储整个应用程序范围的数据。 执行流程可预测。事件处理程序是简单的、易于测试的Python函数。没有重复运行,没有奇怪的装饰器。

二、但是,有多快呢?

对简单事件的响应需要约1-2毫秒,本文在MacBook Air M2上进行了本地测试。这个数字是端到端的,包括事件生成、事件处理和DOM操作。然而,如果在远程运行应用程序,当然会受到连接速度的限制。

使用来自后端的随机数据每秒刷新DataFrame组件约400次,同时流畅地对其他事件做出反应。在MacBook Air M2上的Docker容器中本地运行。

三、为什么要使用可视化用户界面编辑器?

如果执行得当,会有很多好处。 可视化编辑器可让你专注于应用程序的逻辑——保持整洁,缩小代码库。 复杂的布局变得易于构建和维护,同时与逻辑保持独立。 更容易发现和理解可用的组件。 即时的可视化反馈可以帮助你创建更好的界面。

不过,并非所有的可视化编辑器都是一样的。

使用Streamsync Builder编辑组件。

如果执行不力,可视化编辑器会让你后悔当初使用代码。通常情况下,在创建应用程序时,界面看起来与运行应用程序时并不一样。Streamsync Builder则不同。它从零开始专门设计,作为实际应用的覆盖层,允许你在应用运行时对其进行修改。应用程序保持完全交互。

Streamsync Builder可在本地运行。可以继续使用自己喜欢的代码编辑器、插件和版本控制工具。当对Python文件进行修改时,应用程序的进程将被重新加载。为方便起见,应用程序的入口点(main.py)提供了一个内置编辑器,非常适合快速编辑,但无需依赖它。

四、架构

Streamsync使用Python、TypeScript、Vue和FastAPI构建。它以标准Python软件包的形式发布。

4.1 概述

当事件发生时,它会使用WebSockets从浏览器发送到Web服务器。 Web服务器(FastAPI)通过asyncio调用将其传递给框架的AppRunner。 AppRunner通过multiprocessing.Pipe将其调度到AppProcess,AppProcess是负责运行应用程序代码的独立过程。 AppProcess会找到合适的事件处理程序,并在使用相关会话的应用程序状态的线程池中运行它。

4.2 状态驱动、反应式用户界面

如前所述,Streamsync使用状态驱动的反应式用户界面。它的灵感来自现代前端框架。

从用户界面调用应用程序状态。

在组件属性中的状态引用使用@{my_var}语法进行。例如,可以将标题(Heading)组件的Text属性设置为@{title}。当title发生变化时,标题会自动更新。

用户界面与逻辑分离。可以将标题替换为文本组件,或者在尽可能多的组件中显示title——无需对后端进行任何更改。

为输入组件设置双向绑定。

输入组件可以使用双向绑定——无需任何努力即可保持与状态同步。例如,当滑块输入发生变化时,my_var的值也会发生变化。当my_var发生变化时,滑块会自动移动以反映变化。

4.3 事件处理程序

状态突变由事件处理程序执行,这些处理程序使用Streamsync Builder分配给UI组件。

将事件处理程序分配给组件。

下面的事件处理程序会更改作为参数传递的会话应用状态中title的值。

def handle_click(state):

  state["title"] = "You've clicked the button"

更复杂的事件处理程序会接收一个有效载荷,根据事件的不同,有效载荷也会不同。例如,网络摄像头捕捉(Webcam Capture)的处理程序将接收一个包含PNG图像的二进制文件对象。在后台,Streamsync负责序列化和反序列化。

五、展望未来

现在已经有了一个功能齐全的框架,包含可视化编辑器和35个组件,接下来在功能方面,将重点关注以下几个方面:

将基本的DataFrame组件替换为支持排序、事件和编辑的高性能数据网格。 完善输入组件。 提高可观察性。

六、尝试使用Streamsync

是否应该用Streamsync替换一切?也许还不是时候。但应该尝试并关注它。

文档请访问https://www.streamsync.cloud/。Python软件包在PyPi上,这意味着可以通过pip进行安装。

# 安装可选依赖项(pandas和plotly-express)

# 需要Python 3.9.2或更高版本

pip install "streamsync[ds]"

# 在"hello"文件夹中创建演示应用程序

# 并启动Builder,该生成器可通过本地URL访问

streamsync hello

或者,查看在Google Cloud Run(美国东部)上运行的示例应用程序:https://hello.streamsync.cloud。

源代码可在Github上获取:https://github.com/streamsync-cloud/streamsync。

推荐书单

IT BOOK 多得(点击查看5折活动书单)https://u.jd.com/psx2y1M

《Python从入门到精通(微课精编版)》

《Python从入门到精通(微课精编版)》使用通俗易懂的语言、丰富的案例,详细介绍了Python语言的编程知识和应用技巧。全书共24章,内容包括Python开发环境、变量和数据类型、表达式、程序结构、序列、字典和集合、字符串、正则表达式、函数、类、模块、异常处理和程序调试、进程和线程、文件操作、数据库操作、图形界面编程、网络编程、Web编程、网络爬虫、数据处理等,还详细介绍了多个综合实战项目。其中,第24章为扩展项目在线开发,是一章纯线上内容。全书结构完整,知识点与示例相结合,并配有案例实战,可操作性强,示例源代码大都给出详细注释,读者可轻松学习,快速上手。本书采用O2O教学模式,线下与线上协同,以纸质内容为基础,同时拓展更多超值的线上内容,读者使用手机微信扫一扫即可快速阅读,拓展知识,开阔视野,获取超额实战体验。《Python从入门到精通(微课精编版)》https://item.jd.com/13524355.html

精彩回顾

《基于功夫熊猫实例探索Python风格像素游戏》

《8个有趣实用的Python脚本》

《代码减半,5个绝佳的Python装饰器》

《使用Streamlit快速搭建和共享交互式应用》

《解放生产力,使用Python实现产品图片自动化处理》

《10个最好的机器学习和人工智能Python库》

微信搜索关注《Python学研大本营》,加入读者群

访问【IT今日热榜】,发现每日技术热点

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。