Python Asyncio:保持多个协同路由运行

Python Asyncio:保持多个协同路由运行,python,python-3.x,python-asyncio,Python,Python 3.x,Python Asyncio,我有多个协同程序需要同时运行(永远)。对于错误处理,其中一个例程偶尔会结束并需要重新启动,我使用以下代码,但它假设需要重新启动的是协同例程1 pending = {coroutine1(), coroutine2()} while True: a = asyncio.wait(pending, return_when=asyncio.FIRST_COMPLETED) done, pending = loop.run_until_complete(a) pending =

我有多个协同程序需要同时运行(永远)。对于错误处理,其中一个例程偶尔会结束并需要重新启动,我使用以下代码,但它假设需要重新启动的是协同例程1

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))