可以使用try/except块捕获协程中的异常,并通过调用协程对象的cancel方法来取消未完成的协程。例如:
async def coro1():
try:
# websocket call
except:
# catch exception and cancel other coroutines
task.cancel()
async def coro2():
# some other code
async def main():
task1 = asyncio.create_task(coro1())
task2 = asyncio.create_task(coro2())
done, pending = await asyncio.wait(
[task1, task2],
return_when=asyncio.ALL_COMPLETED
)
for task in pending:
task.cancel()
asyncio.run(main())