python wesockets异步执行时, 发送信息阻塞 卡住的问题

问题

采用的代码: python + websockets
目前在测试需求过程中,在使用 websockets 异步方式时, 发送一个信息的代码如下:

    async def heartbeat(self,websocket):
        # 发送心跳
        while True:
            await websocket.send('heartbeat')

如上,如果这个写法,可能会导致 send 之后,程序一直 卡住 或者 阻塞,或者感觉变成了 同步的方式。长时间找不到 解决办法


原因

原因不是看的太明确,下面贴地址,大佬们可以自行查看
参考地址:
https://websockets.readthedocs.io/en/stable/faq/asyncio.html

解决方式

在阻塞处增加 await asyncio.sleep(0)

代码如下(示例):

    async def heartbeat(self,websocket):
        # 发送心跳
        while True:
            await websocket.send('heartbeat')
			await asyncio.sleep(0)  # 增加这一行