+-
我有以下摘录,除了要求我知道我计划提前打开多少个WebSockets之外,它在各个方面都能正常工作。
如果我开始使用主机列表并且必须创建N个WebSocket连接,我怎样才能在循环中完成此代码对3个Websockets(通过'async with')的N所做的事情?
等待我已经在循环中,它是“异步”,我无法弄清楚如何“循环”。
async with websockets.connect('ws://192.168.0.174:81') as websocket1:
async with websockets.connect('ws://192.168.0.194:81') as websocket2:
async with websockets.connect('ws://192.168.0.179:81') as websocket3:
datatosend = GetBallData()
for socket in [websocket1, websocket2, websocket3]:
await socket.send(datatosend)
2
投票
投票
从Python3.7开始,AsyncExitStack模块中有contextlib
,这就是它如何用于您的问题:
hosts = ['ws://192.168.0.174:81', 'ws://192.168.0.194:81', 'ws://192.168.0.179:81']
async with contextlib.AsyncExitStack() as stack:
sockets = [
await stack.enter_async_context(websockets.connect(host))
for host in hosts
]