2017-02-20 28 views
1

aiohttp库的documentation状态:为什么使用显式循环参数与aiohttp?

环路 - 用于处理HTTP请求的事件循环。如果param为None,则使用asyncio.get_event_loop()获取默认事件循环,但我们强烈建议在任何地方使用显式循环。 (可选)

它可以通过loopClientSession对象,以提供“模块级”功能等

我是新来的异步编程概念,作为一个整体,你可以解释我为什么建议明确提供循环使用,而不是让对象/函数只使用默认值?

想到的一种用法是通过能够提供自己的循环模拟来使测试变得更容易,是否存在性能原因?

回答

1

原因是可读性而不是性能。

明确指定循环将使开发人员更容易查看循环实例的起源位置,并且如果需要将自定义循环注入到程序中,可能会更容易更改循环。

另一个受欢迎的选项是从不指定循环参数,因此总是调用asyncio.get_event_loop()来获取循环实例。

(可以使用多个循环 - 例如在不同的线程中,但这不是常见用例)

相关问题