小编PAT*_*sha的帖子

如何正确使用 asyncio.FIRST_COMPLETED

问题是,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)

python python-asyncio aiohttp

5
推荐指数
1
解决办法
3438
查看次数

标签 统计

aiohttp ×1

python ×1

python-asyncio ×1