通过参数传递异步循环或使用默认异步循环
Passing asyncio loop by argument or using default asyncio loop
我在我的应用程序中使用了 asyncio,我对将 事件循环 作为参数传递有点困惑。
使用 事件循环 编写 function/method 时,您有三种可能性:
- 将异步事件循环作为参数传递
- 不要为事件循环使用参数,而使用
asyncio.get_event_loop()
- 将事件循环作为参数传递为可选。如果不通过,则使用
asyncio.get_event_loop()
似乎大部分时间都使用最后一种情况,但即使在 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()
在需要的地方,它会给你正确的循环。
我在我的应用程序中使用了 asyncio,我对将 事件循环 作为参数传递有点困惑。
使用 事件循环 编写 function/method 时,您有三种可能性:
- 将异步事件循环作为参数传递
- 不要为事件循环使用参数,而使用
asyncio.get_event_loop()
- 将事件循环作为参数传递为可选。如果不通过,则使用
asyncio.get_event_loop()
似乎大部分时间都使用最后一种情况,但即使在 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()
在需要的地方,它会给你正确的循环。