我很难理解下面代码的原因,希望有人可以对此有所了解 . 我是异步编程的新手 .
这是来自websockets文档
#!/usr/bin/env python
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
await websocket.send(message)
asyncio.get_event_loop().run_until_complete(
websockets.serve(echo, 'localhost', 8765))
asyncio.get_event_loop().run_forever()
我对asyncio设计有一些疑问,以及如何利用这一点 .
首先,看看最后两行 . 如果我理解正确,完成工作后不应该run_until_complete shutdown吗?如果第二个循环没有提交到循环中的作业,它怎么能保持活着?
其次,我试图构建一个back_end,它可以使用websockets处理来自front_end的一些数据,并实时返回计算结果 . 将会有两种任务,一种是需要计算能力的位长,但会发生一次会话,以及需要立即发回的流数据处理(每秒90帧) .
对于更大的任务,我是否应该启动另一个处理更长工作的websocket服务器,并使用主websocket来使用它?或者使用另一个进程在链式异步函数中完成工作?对于较小的任务,如果我像上面那样做会怎么样?
TLDR:
-
异步编程正在撼动我的大脑 .
-
维护非阻塞会话
-
哪个过程努力工作和轻松同时工作
-
轻量级应该具有零延迟
-
努力工作应该尽可能快,但不要影响轻松工作 .
谢谢!!