通过参数传递异步循环或使用默认异步循环

Passing asyncio loop by argument or using default asyncio loop

我在我的应用程序中使用了 asyncio,我对将 事件循环 作为参数传递有点困惑。

使用 事件循环 编写 function/method 时,您有三种可能性:

似乎大部分时间都使用最后一种情况,但即使在 asyncio api 中,用法也不一致。因为我不缩进使用两个单独的 事件循环 什么反对只在需要的地方使用 asyncio.get_event_loop()

最好的方法是什么?

一个很好的(正如 Guido van Rossum 称赞的)博客 post 讨论这个是 Some thoughts on asynchronous API design in a post-async/await world. With a follow up discussion from python core developers here

TLDR;

如果您只使用一个事件循环,那没关系。

如果您正在管理多个循环,并且 python >= 3.6 这通常无关紧要:不要使用参数并使用 asyncio.get_event_loop() 在需要的地方,它会给你正确的循环。