我的主Python线程不使用asyncio,但它创建了一个新线程,该线程的代码使用asyncio,在调用get_event_loop()时遇到错误
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 926, in _bootstrap_inner
self.run()
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/Users/hanxu/work/thunderrock/node_server/quic/udp_async.py", line 33, in udp_async
loop = asyncio.get_event_loop()
File "/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/events.py", line 644, in get_event_loop
% threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'Thread-5'.对于Python 3.7的在线文档,get_event_loop应该自动创建一个新的事件循环(如果还不存在)。为什么在这种情况下它会失败?是不是因为线程化?
顺便说一句,我正在做以下工作来解决这个问题,但仍然想知道为什么这个问题会存在:
try:
loop = asyncio.get_event_loop()
except RuntimeError:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)发布于 2020-01-18 21:31:51
https://stackoverflow.com/questions/59779657
复制相似问题