asyncio --错误信息处理: RuntimeError: Event loop is closed

出现这个错误信息的来源

  • 用 asyncio.run()方法执行任务时,有时候会出现这样的错误
  • 虽然代码执行没有问题,但是报错总感觉不爽

解决办法:

1.解决办法一:

  • 不用asyncio.run() 去执行任务,换成
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(task_list))

2.解决办法二,重写父类的方法,代码示例:

from functools import wraps
from asyncio.proactor_events import _ProactorBasePipeTransport

def silence_event_loop_closed(func):
    @wraps(func)
    def wrapper(self, *args, **kwargs):
        try:
            return func(self, *args, **kwargs)
        except RuntimeError as e:
            if str(e) != 'Event loop is closed':
                raise
    return wrapper
_ProactorBasePipeTransport.__del__ = silence_event_loop_closed(_ProactorBasePipeTransport.__del__)
posted @ 2022-04-29 19:25  志强爱璇璇  阅读(1513)  评论(0)    收藏  举报