我在loop
中调用aiohttp
方法时为aiohttp.web.run_app(loop)
设置了v2.3
。但是,更新到v3
后,参数已消失,我找不到设置特定循环的方法。
(可能只有make_handler(loop)
,但我想要更高级别的API。)
虽然loop
处有aiohttp.web.Application
参数,但在aiohttp.web.Application的说明中,它是在loop
参数上说的,如下所示。
循环 -
事件循环
自2.0版以来不推荐使用:不推荐使用该参数。循环在冻结阶段设置。
这里的freeze state
是什么?
在浏览源代码时,似乎只是使用默认loop
,在内部调用asyncio.get_event_loop()
。
为loop
设置特定的aiohttp
是否有任何不同的方式?
这是我的用例。
loop.create_task
。loop
并使用了loop
,以便所有包含aiohttp
的协同程序都在loop
上运行。loop
来实现,以便包含aiohttp
的所有协同程序都运行在默认loop
上。unittest
运行AioHTTPTestCase
时,它会在内部禁用默认loop
并使用新循环(new_event_loop
)。loop
中使用默认unittest
。我想如果没有办法我需要对我的应用程序进行一些更改。但是,在此之前,我只想确定它以及aiohttp
组删除它的原因。
答案 0 :(得分:0)
自从将最小支持版本削减到Python 3.5.3后,可以通过将测试循环设置为asyncio.set_event_loop()
的默认值来修改测试套件。
奇怪的是你怎么没有初始化事件循环呢?
所有初始化挂钩(self.get_application()
,self.get_server()
,self.get_client()
)都在协程上下文中调用,一切都应该完美。
我看到了唯一的方法 - 你可能在Python 3.5.1或3.5.2上安装了aiohttp 3并使用旧的setuptools版本忽略了python_requires
参数。