提供三重奏支持的四重奏分机。
Quart-Trio的Python项目详细描述
quart trio是Quart的扩展,用于支持Trio事件循环。这是一个 使用python中的asyncio事件循环的替代方法 标准库,在quart中默认支持。
用法
要启用trio支持,只需使用QuartTrioapp类 而不是Quartapp类,
fromquart_trioimportQuartTrioapp=QuartTrio(__name__)@app.route('/')asyncdefindex():awaittrio.sleep(0.01)asyncwithtrio.open_nurseryasnursery:nursery.start_soon(...)return...
使用Quart Trio的一个更具体的例子 演示下面给出的trio api的清晰性。这个例子 演示使用服务器向所有聊天服务器进行简单广播 启动心跳。
app=QuartTrio(__name__)connections=set()asyncdefws_receive():whileTrue:data=awaitwebsocket.receive()forconnectioninconnections:awaitconnection.send(data)asyncdefws_send():whileTrue:awaittrio.sleep(1)awaitwebsocket.send("Heatbeat")@app.websocket('/ws')asyncdefws():connections.add(websocket._get_current_object())asyncwithtrio.open_nursery()asnursery:nursery.start_soon(ws_receive)nursery.start_soon(ws_send)connections.remove(websocket._get_current_object())
背景任务
要在三人组中开始任务,您需要一个托儿所,对于后台任务,您需要 需要一个在请求完成后存在的苗圃。在 夸脱三重奏,这个苗圃存在于应用程序,
@app.route("/")asyncdeftrigger_job():app.nursery.start_soon(background_task)return"Started",201
多个错误
在处理请求或WebSocket期间引发的多个错误是 捕获并对照处理程序检查包含的异常, 将返回第一个处理的异常。这可能会导致 不确定的代码,因为它将取决于引发的错误 首先(在可以处理多个错误的情况下)。
展开
要在生产环境中运行quart trio,您应该使用一个asgi服务器 支持三人组。目前只有Hypercorn这样做。
贡献
四重奏是在GitLab上发展起来的。很欢迎你来 打开issues或 提议merge requests。
测试
测试夸脱三重奏的最佳方法是使用毒性物质,
$ pip install tox $ tox
这将检查代码样式并运行测试。
帮助
这个自述文件是最好的开始,然后尝试打开 issue。