loop.close()在运行该示例代码之前,您已经在全局事件循环上调用了:
>>> import asyncio>>> asyncio.get_event_loop().close()>>> asyncio.get_event_loop().is_closed()True>>> asyncio.get_event_loop().run_until_complete(asyncio.sleep(1))Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/.../lib/python3.6/asyncio/base_events.py", line 443, in run_until_complete self._check_closed() File "/.../lib/python3.6/asyncio/base_events.py", line 357, in _check_closed raise RuntimeError('Event loop is closed')RuntimeError: Event loop is closed
您需要创建一个 新 循环:
loop = asyncio.new_event_loop()
您可以使用以下命令将其设置为新的全局循环:
asyncio.set_event_loop(asyncio.new_event_loop())
然后
asyncio.get_event_loop()再次使用。
另外,只要重新启动Python解释器,第一次尝试获取全局事件循环时,您就会获得一个全新的,未关闭的循环。
从Python
3.7开始,在使用时会为您处理创建,管理和关闭循环的过程(以及其他一些资源)
asyncio.run()。应该使用它代替
loop.run_until_complete(),并且不再需要先获取或设置循环。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)