我有多个协程,这些协程需要同时(永远)运行。为了进行错误处理,其中一个例程偶尔会结束,需要重新生成,并且我使用以下代码,但是假设是coroutine1需要重新启动。

pending = {coroutine1(), coroutine2()}
while True:
    a = asyncio.wait(pending, return_when=asyncio.FIRST_COMPLETED)
    done, pending = loop.run_until_complete(a)
    pending = pending | {coroutine1()}


我怎样才能以更好,更通用的方式解决这个问题?

最佳答案

使用其他方法呢?

async def run_forever(corofn):
    while True:
        await corofn()

corofns = coroutine1, coroutine2
await asyncio.wait(map(run_forever, corofns))

关于python - Asyncio:保持多个协程运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43277210/

10-12 21:13