【发布时间】:2018-12-18 21:20:22
【问题描述】:
我有一个异步项目。它有几个模块。他们中的许多人需要访问一些全局变量,例如:
1. aiohttp ClientSession() 对象,因为根据 aiohttp 文档,我应该避免为每个请求创建一个新的 ClientSession。
2. asyncio 套接字,即我使用asyncio.open_connection() 创建的reader, writer。我想保持持久连接。
3. 事件循环,我使用asyncio.get_event_loop()
共享此类变量的最佳做法是什么?
我想创建一个globals.py 模块,它将定义这些变量。
问题是我不能在 globals 模块中对 ClientSession 对象使用 async with 语法。
对于套接字,我必须以某种方式在 async def 中定义它,所以我不能在模块级别公开它。
而且,明智的测试 - 每个模块都应该定义一个全局变量,例如:loop = asyncio.get_event_loop()
或者,将事件循环传递给模块是否更好,例如在类__init__)?
【问题讨论】:
标签: python testing pytest python-asyncio aiohttp