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

Gün*_*ena 17 python python-asyncio python-3.5

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

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

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

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

什么是最好的方式?

小智 8

一个好的(如Guido van Rossum称赞的)博客文章讨论这个是关于异步/等待世界中的异步API设计的一些想法.这里有来自python核心开发人员的后续讨论.

TLDR;

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

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

  • 我花了一段时间来验证Guido是否在船上.此消息对此有用:https://groups.google.com/d/msg/python-tulip/yF9C-rFpiKk/tk5oA3GLHAAJ (2认同)