官方Plotly Dash库的异步端口
项目描述
Async Dash
async-dash
是Plotly Dash库的异步端口,通过将其flask后端替换为其异步对应版本quart创建。
这始于我使用dash
创建实时仪表板的需求,特别是具有事件驱动架构。使用async-dash
与dash-extensions中的组件,例如WebSocket、EventSource等,您可以创建真正基于事件或实时的仪表板。
目录
安装
pip install async-dash
用法
from async_dash import Dash
from dash import html, dcc
简单示例
import asyncio
import random
from async_dash import Dash
from dash import html, Output, Input, dcc
from dash_extensions import WebSocket
from quart import websocket, json
app = Dash(__name__)
app.layout = html.Div([WebSocket(id="ws"), dcc.Graph(id="graph")])
app.clientside_callback(
"""
function(msg) {
if (msg) {
const data = JSON.parse(msg.data);
return {data: [{y: data, type: "scatter"}]};
} else {
return {};
}
}""",
Output("graph", "figure"),
[Input("ws", "message")],
)
@app.server.websocket("/ws")
async def ws():
while True:
output = json.dumps([random.randint(200, 1000) for _ in range(6)])
await websocket.send(output)
await asyncio.sleep(1)
if __name__ == "__main__":
app.run_server()
动机
除了编写异步代码的所有优点外,async-dash
还允许您
- 运行真正的异步回调
- 使用WebSockets、服务器发送事件等,无需修改Python标准库
- 与您的dash应用一起使用
quart
/fastapi
/starlette
框架 - 如果您使用支持HTTP/2(特别是服务器推送)的服务器,如
hypercorn
,请使用HTTP/2。
注意事项
目前,我正在将此库作为概念验证进行维护。它不应用于生产。您可以在这里看到与dash
的偏差。
如果您决定使用它,我很乐意听到您的反馈。
替代方案
dash-devices
dash-devices
是基于quart
的另一个异步端口。它甚至能够为回调使用WebSockets,这使得它的速度比dash
或async-dash
都要快得多。然而,在这个文档最后更新时,该库已经过时。
PS: async-dash
深受dash-devices
的启发。区别在于async-dash
试图尽可能接近dash
。
已知问题
- 在调试模式下,回调的异常处理已损坏。因此,它已内部禁用。
待办事项
- 编写展示异步
dash
用例的示例/文章。 - 收集来自Dash社区的评论和反馈。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
async-dash-0.1.0a1.tar.gz (6.8 kB 查看哈希值)
构建分布
async_dash-0.1.0a1-py3-none-any.whl (6.8 kB 查看哈希值)
关闭
async-dash-0.1.0a1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b861a3adeeb32f4e3cd3e67a866f5f97c264a2b2be3efe2e3cacc13efd05234 |
|
MD5 | 0e85afcb93c3efc1b8178c20aeae7d44 |
|
BLAKE2b-256 | e511c48a39016f3022b5f2c14369153f243350dc3020ee45f4ee52bd10a8b1fe |
关闭
async_dash-0.1.0a1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 47d3c50acc97d30f131c9177062e538d121c2e4f0ff09ab85f6ae2e291bed6ba |
|
MD5 | 1952efcd89d99dc9db28024775934eeb |
|
BLAKE2b-256 | ce1186e672fc9994b6c534e311789f316ce9209cd9b912254a632c9918d7605e |