我很难理解下面代码的原因,希望有人可以对此有所了解 . 我是异步编程的新手 .

这是来自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:

  • 异步编程正在撼动我的大脑 .

  • 维护非阻塞会话

  • 哪个过程努力工作和轻松同时工作

  • 轻量级应该具有零延迟

  • 努力工作应该尽可能快,但不要影响轻松工作 .

谢谢!!