【发布时间】:2020-09-24 10:22:41
【问题描述】:
我正在使用 AsyncIO 和 Websockets 模块在 Python 中创建两个并发任务,每个任务都连接到一个 websocket 服务器并接收消息。
我正在尝试创建一个系统,当一个任务超过 4 秒没有收到消息时,它必须关闭连接和任务,但我很难弄清楚这一点。谁能帮我解决这个问题?
这是我尝试过的:
async def connect(URI):
async with websockets.client.connect(URI) as ws:
LastUpdate = time.time()
while time.time() - LastUpdate < 4:
LastUpdate = time.time()
await ws.recv()
print('Not receiving updates anymore')
async def main():
Tasks = [asyncio.create_task(connect('URI1')), asyncio.create_task(connect('URI2'))]
await asyncio.gather(*Tasks)
在这里,main 创建了两个并发任务并同时运行它们。 connect 负责连接和接收消息。我试图做的是在最后一次更新超过 4 秒之前打破 while 循环,但这不起作用,因为循环没有被打破。
【问题讨论】:
-
URI1这一行有错字吗?async with websockets.client.connect(URI1) as ws: -
是的,已更正。谢谢!
标签: python python-3.x websocket python-asyncio