У меня есть проект asyncio.Имеет несколько модулей.Многие из них нуждаются в доступе к нескольким глобальным переменным, таким как: 1. объект aiohttp ClientSession()
, поскольку, согласно документам aiohttp, мне следует избегать создания новой ClientSession для каждого запроса.
2. сокет asyncio, то есть reader, writer
, которыйЯ создаю, используя asyncio.open_connection()
.Я хочу поддерживать постоянное соединение.
3. Цикл событий, который я получаю с помощью asyncio.get_event_loop()
Как лучше всего делиться такими переменными?
Я хотел бы создать globals.py
модуль, который будет определять эти переменные.
Проблема в том, что я не могу использовать синтаксис async with
для объекта ClientSession
в модуле globals.
Для сокета я должен как-то определить его в async def, поэтому яне может выставить его на уровне модуля.
И, если проверять, - должен ли каждый модуль определять глобальную переменную, такую как:
loop = asyncio.get_event_loop()
Или лучше передать цикл событий вмодуль, например в классе __init__
)?