新版Dash中的websocket型回调
在Dash应用中使用websocket型回调#首先我们需要在应用实例化对应的dash.Dash()中设置参数backendfastapi这是令Dash应用底层完美开启websocket通信的必要前提。app dash.Dash(__name__, backendfastapi)在此基础上只需要在对应常规服务端回调函数的callback()中设置websocketTrue该服务端回调函数底层网络通信就会从默认的http传输切换为高性能websocket传输下面是一个简单的例子import dash from dash import html import feffery_antd_components as fac from feffery_dash_utils.style_utils import style from dash.dependencies import Input, Output app dash.Dash(__name__, backendfastapi) app.layout html.Div( [ fac.AntdSpace( [ fac.AntdInput(idinput, placeholder请输入内容), fac.AntdText(idoutput), ] ) ], stylestyle(padding50), ) app.callback(Output(output, children), Input(input, value), websocketTrue) def basic_demo(input_text): return input_text if __name__ __main__: app.run(debugTrue)切换为websocket通信模式后除了响应延时上的显著提升⚡以外更重要的是借助websocket双向通信的特点新版本Dash中可以实现在回调函数里随时随地与前端界面进行数据获取更新下面我们简单举几个例子2.2.1 在websocket回调中实时更新应用#基于新型websocket回调我们可以在回调函数中配合set_props()实时更新相关组件属性譬如下面的实时进度条更新示例import dash import time from dash import html, set_props import feffery_antd_components as fac from feffery_dash_utils.style_utils import style from dash.dependencies import Input app dash.Dash(__name__, backendfastapi) app.layout html.Div( [ fac.AntdSpace( [ fac.AntdButton( 执行任务, idexecute, loadingChildren执行中, typeprimary, autoSpinTrue, ), fac.AntdProgress(idprogress, percent0, stylestyle(width200)), ] ) ], stylestyle(padding50), ) app.callback(Input(execute, nClicks), websocketTrue, prevent_initial_callTrue) def update_progress(nClicks): for i in range(10): time.sleep(0.25) # 模拟计算耗时 set_props(progress, {percent: (i 1) * 10}) set_props(execute, {loading: False}) if __name__ __main__: app.run(debugTrue)2.2.2 在websocket回调中实时获取组件属性#更高级的是基于新型websocket回调函数我们还可以在回调函数中实时获取任意指定id组件对应的任意属性值在异步回调函数中使用譬如下面的例子我们没有事先在回调函数编排中声明两个输入框角色但基于get_prop()就可以在回调函数运行的过程中即时获取想要的属性值import dash from dash import html import feffery_antd_components as fac from feffery_dash_utils.style_utils import style from dash.dependencies import Input app dash.Dash(__name__, backendfastapi) app.layout html.Div( [ fac.AntdSpace( [ fac.AntdButton(触发回调, idtrigger, typeprimary), fac.AntdInput(idinput1), fac.AntdInput(idinput2), ] ) ], stylestyle(padding50), ) app.callback(Input(trigger, nClicks), websocketTrue, prevent_initial_callTrue) async def get_prop_demo(nClicks): ws dash.ctx.websocket value1 await ws.get_prop(input1, value) value2 await ws.get_prop(input2, value) print(value1, value2)

相关新闻

P1423 小玉在游泳 题解

P1423 小玉在游泳 题解

题目 小玉在游泳 —————————————————————————————— 题目描述 小玉开心的在游泳,可是她很快难过的发现,自己的力气不够,游泳好累哦。已知小玉第一步能游 2 米,可是随着越来越累,力气越来越…

2026/6/28 2:08:12阅读更多 →
计算机底层硬件架构与AI算力核心原理指南

计算机底层硬件架构与AI算力核心原理指南

理解计算机与人工智能的底层运行机制,必须摒弃抽象的软件概念,回归半导体物理与电路设计的本质。现代计算机系统的核心并非魔法,而是基于高低电压状态的电信号流转。本指南旨在从物理现实出发,系统拆解从晶体管到AI大模型算力的底…

2026/6/28 2:08:12阅读更多 →
接口异常场景测试:超时、参数非法、重复请求

接口异常场景测试:超时、参数非法、重复请求

接口80%的线上故障都出在异常场景,正常场景基本不会出问题。本文聚焦接口高频异常场景:超时、参数非法、重复请求、并发异常、断网重试等,讲解测试思路、实操方法、问题判定标准。一、参数非法异常测试(最基础最高频)1…

2026/6/28 2:03:12阅读更多 →
SolidWorks_曲线与曲面设计11_平面区域构建

SolidWorks_曲线与曲面设计11_平面区域构建

平面区域构建:从封闭3D曲线到平面片体的完整指南 摘要 在计算机图形学、CAD/CAM、有限元分析和3D建模等领域,经常需要将一组封闭的3D曲线或边线组合转换为一个连续的平面区域(平面片体)。这一过程被称为“平面区域构建”&#x…

2026/6/28 3:43:17阅读更多 →
慈溪小家电制造老板的财税困局:成本票不足怎么办?宁波本地团队的3个解决方案

慈溪小家电制造老板的财税困局:成本票不足怎么办?宁波本地团队的3个解决方案

"成本票不够,税负太高,怎么办?"这是宁波安税创业服务有限公司经常接到的咨询,特别是来自慈溪小家电制造老板的求助。慈溪作为全国著名的小家电制造基地,拥有众多小家电制造企业,但由于行业特点&a…

2026/6/28 3:43:17阅读更多 →
在数据分析中,什么是结构化数据与非结构化数据?它们的区别是什么?

在数据分析中,什么是结构化数据与非结构化数据?它们的区别是什么?

结构化数据与非结构化数据 一、定义 结构化数据 可以用二维表格(行和列)清晰表示的数据,每条记录都有固定的字段、明确的数据类型和预定义的格式。 员工ID | 姓名 | 部门 | 入职日期 | 薪资 --------|--------|--------|-----------|-…

2026/6/28 3:43:17阅读更多 →
uni-app中的硬绑定和硬复制

uni-app中的硬绑定和硬复制

1. uni-app中的硬绑定和硬复制uni-app及vue开发循环创建的input框,value改变一个都随之改变的问题?//数组:var a [1, 2, 3];console.log("数组原始a:", a);var b a;b.push(4); // b中添加了一个4console.log("数组a:",…

2026/6/28 3:43:17阅读更多 →
ECS随笔1

ECS随笔1

文章目录概念拆解Logic ECS WorldRender/View WorldView Entity非 ECS 部分阶段总结概念 ECS World 负责描述游戏世界里“有什么、在哪里、状态如何、规则如何推进”。Entity 是逻辑世界里的实体编号,不是屏幕上的显示对象。Component 是挂在 Entity 上的纯数据&am…

2026/6/28 3:43:17阅读更多 →
Dify — 聊天助手 -- 知识库

Dify — 聊天助手 -- 知识库

接入模型 添加知识库 大模型先在本地知识库里找有没有相关知识,如果没有再去网上找 知识库:对文本内容进行分片(Chunk) -> 每个段进行向量化(Vector) > DB 提问:也会对输入的内容进行分片(Chunk) -> 进行向…

2026/6/28 3:38:17阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →