В Python 3.6 вы можете использовать asyncio.get_event_loop()
для эквивалентного эффекта.
В соответствии с документацией это эквивалентно вызову get_event_loop_policy().get_event_loop()
, что в свою очередь задокументировано для возврата "текущего цикла событий" при вызове из сопрограммы.
Другими словами, при вызове из сопрограммы (или из функции, вызванной сопрограммой) нет разницы между get_event_loop
и get_running_loop
, оба возвращают работающий цикл. Только когда ни один цикл не запущен, get_event_loop()
будет продолжать возвращать цикл, связанный с текущим потоком, в то время как get_running_loop()
вызовет исключение. Пока вы будете осторожны с вызовом get_event_loop()
во время выполнения цикла, он будет эквивалентен get_running_loop()
.
Обратите внимание, что get_event_loop
, возвращающий рабочий цикл при вызове из сопрограммы, является новым для Python 3.6 и 3.5.3 . До этих версий get_event_loop
всегда возвращал цикл обработки событий, связанный с текущим потоком, который мог бы отличаться от цикла, который фактически выполняется. Это сделало get_event_loop()
принципиально ненадежным и стало причиной того, что старый asyncio мог везде передавать аргумент loop
. Подробнее здесь .