通过参数或使用默认的asyncio循环传递asyncio循环

时间:2016-10-31 10:38:04

标签: python python-3.5 python-asyncio

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

使用事件循环编写函数/方法时有三种可能性:

  • 将asyncio 事件循环作为参数传递
  • 不要为事件循环使用参数并使用asyncio.get_event_loop()
  • 事件循环作为参数传递给它是可选的。如果未通过,请使用asyncio.get_event_loop()

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

最好的方法是什么?

1 个答案:

答案 0 :(得分:8)

一个好的(正如Guido van Rossum所称赞的)博客文章讨论的是Some thoughts on asynchronous API design in a post-async/await world。随着python核心开发人员here的后续讨论。

TLDR;

如果您只使用一个事件循环,则无关紧要。

如果您正在管理多个循环,并且有python> = 3.6 ,那么大多数都无关紧要:不要使用参数并在需要时使用asyncio.get_event_loop(),它会给你正确的循环。