首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为aiohttp v3设置一个特定的循环?

如何为aiohttp v3设置一个特定的循环?
EN

Stack Overflow用户
提问于 2018-03-03 13:27:24
回答 1查看 287关注 0票数 2

我在aiohttp中调用aiohttp.web.run_app(loop)方法时为v2.3设置了一个v2.3。但是,在更新到v3之后,参数消失了,我无法找到一种设置特定循环的方法。(可能只是通过make_handler(loop),但我想要更高级别的API。)

虽然在loop中有aiohttp.web.Application参数,但是在对aiohttp.web.Application的描述中,它在loop参数上的意思如下所示。

回圈- 事件循环 自2.0版起就不再建议使用该参数:循环在冻结阶段被设定。

freeze state在这里是什么?

在我查看源代码时,似乎只是使用默认的loop,在内部调用asyncio.get_event_loop()

是否有不同的方法为aiohttp设置特定的aiohttp

编辑

这是我的用例。

  1. 在我的应用程序中,它内部调用loop.create_task
  2. 在2.3版中,我给应用程序指定了特定的loop,并使用了loop,这样所有包含aiohttp的协同器都可以在loop上运行。
  3. 在v3中,我可以通过让所有协同线使用默认的loop来实现它,这样所有包含aiohttp的协同线都运行在默认的loop之上。
  4. 但是,当我使用unittest运行AioHTTPTestCase时,它会在内部禁用默认的loop,并使用新循环(new_event_loop)。
  5. 结果,其他协同器会生成一个错误,因为它们试图在loop中使用默认的unittest

我在想,如果没有办法的话,我需要对我的应用程序做一些修改。然而,在此之前,我只想确保它和为什么aiohttp组删除它。

EN

回答 1

Stack Overflow用户

发布于 2018-03-05 09:16:32

由于将最小支持的版本削减到Python3.5.3,所以可以通过将测试循环设置为asyncio.set_event_loop()的默认设置来修改测试套件。

奇怪的是,为什么根本没有初始化事件循环呢?所有初始化钩子(self.get_application()self.get_server()self.get_client())都是在协同线上下文中调用的,一切都应该完美地工作。

我看到了唯一的方法--您已经在Python3.5.1或3.5.2上安装了aiohttp 3,并且使用了旧的setuptools版本,它忽略了python_requires参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49084650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档