Bạn đã gọi loop.close()
trước khi bạn chạy mà mảnh mẫu mã, trên vòng lặp sự kiện toàn cầu:
>>> 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
Bạn cần phải tạo một vòng lặp mới:
loop = asyncio.new_event_loop()
Bạn có thể đặt làm vòng lặp toàn cầu mới với:
asyncio.set_event_loop(asyncio.new_event_loop())
và sau đó chỉ cần sử dụng lại asyncio.get_event_loop()
.
Hoặc, chỉ cần khởi động lại trình thông dịch Python của bạn, lần đầu tiên bạn cố gắng lấy vòng lặp sự kiện toàn cầu, bạn sẽ nhận được vòng lặp mới, không được tiết lộ.
Nguồn
2017-08-09 21:24:42