问题是,RuntimeError: Event loop is closed即使我使用return_when=asyncio.FIRST_COMPLETEDinside ,我也会不断出错await asyncio.wait()。
我的代码:
async def task_manager():
tasks = [grab_proxy() for _ in range(10)]
finished, unfinished = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
for x in finished:
result = x.result()
if result:
return result
def get_proxy_loop():
loop = asyncio.new_event_loop()
proxy = loop.run_until_complete(task_manager())
loop.close()
return proxy
if __name__ == '__main__':
p = get_proxy_loop()
print(type(p))
print(p)
Run Code Online (Sandbox Code Playgroud)
预期行为:
return_when=asyncio.FIRST_COMPLETED 当第一个结果返回“幕后”时,应该终止所有剩余的任务。
但实际上在返回第一个结果后仍然存在未完成的任务。在我关闭循环get_proxy_loop()并访问__main__这些剩余任务中的结果raise 之后RuntimeError: Event loop is closed。
控制台输出:
<class 'str'>
78.32.35.21:55075 …Run Code Online (Sandbox Code Playgroud)