如果coroutine引发asyncio异常,如何关闭循环并打印错误?

2024-04-23 20:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有几次环游。如何使它们中的某些异常失败,整个程序将因该异常而失败?因为现在asyncio甚至不打印来自coroutines的错误消息,除非我使用日志级别“DEBUG”。

from asyncio import get_event_loop, sleep


async def c(sleep_time=2, fail=False):
    print('c', sleep_time, fail)
    if fail:
        raise Exception('fail')
    while True:
        print('doing stuff')
        await sleep(sleep_time)



loop = get_event_loop()
loop.create_task(c(sleep_time=10, fail=False))
loop.create_task(c(fail=True))
loop.run_forever()

Tags: 程序loopeventasynciofalsetruetaskget