我很难理解下面代码的原因,希望有人可以对此有所了解。我是异步编程的新手。
这是来自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吗?如果第二个循环没有提交到循环中的作业,它怎么能保持活着?
其次,我试图构建一个back_end,它可以使用websockets处理来自front_end的一些数据,并实时返回计算结果。将会有两种任务,一种是需要计算能力的位长,但会发生一次会话,以及需要立即发回的流数据处理(每秒90帧)。
对于更大的任务,我应该启动另一个处理更长工作的websocket服务器,并使用主websocket来消耗它吗?或者使用另一个进程在链式异步函数中完成工作?对于较小的任务,如果我像上面那样做会出什么问题?
TLDR:
谢谢!