Передача цикла asyncio по аргументу или использование цикла asyncio по умолчанию
Я использую asyncio в своем приложении, и я немного разбираюсь в передаче контура события в качестве аргумента.
У вас есть три возможности при написании функции/метода с использованием цикла событий:
- Пропустить цикл событий asyncio как аргумент
- Не используйте аргумент для цикла событий и используйте
asyncio.get_event_loop()
- Сделать необязательным для передачи цикла событий в качестве аргумента. Если он не передан, используйте
asyncio.get_event_loop()
Кажется, что последний случай используется большую часть времени, но даже в asyncio api использование несовместимо. Поскольку я не отступаю от использования двух отдельных циклов событий, что говорит против использования asyncio.get_event_loop()
, где необходимо?
Какой лучший способ пойти?
Ответы
Ответ 1
Хороший (как в похвале Гвидо ван Россум) сообщение в блоге, обсуждающее это Некоторые мысли о асинхронном дизайне API в мире после асинхронного/ожидающего. С последующим обсуждением от разработчиков ядра python здесь.
TL;DR;
Если вы используете только один цикл событий, это не имеет значения.
Если вы управляете несколькими циклами, и имеют python >= 3.6, это в основном не имеет значения: не используйте аргумент и не используйте asyncio.get_event_loop()
там, где это необходимо, это даст вам правильный цикл.