Остановить event loop выполнить свою задачу и снова запустить этот же event loop
У меня есть фреймворк, который создаёт event loop. Я не могу это никак изменить. Мой код импортируется в этот event loop и выполняется там. Мне нужно в своём коде выполнить одну задачу. Но не всё так просто.
Я пробовал:
import asyncio
""" Здесь из библиотеки имортируется асинхронная функция """
from library import library_function
""" Функция, которую мне нужно выполнить, она должна быть асинхронной """
async def my_function()
global result
result = await library_function()
""" Получить event loop, созданный фреймворком """
loop = asyncio.get_event_loop()
""" Добавить мою функцию в event loop """
loop.create_task(my_function())
""" !!! Нельзя, чтобы эта часть кода начала выполняться, пока не будет выполнена моя функция !!!
Но она начинает выполняться, потому что моя задача стоит после текущей задачи. А текущая
задача это как раз выполнение этого файла.
Нельзя использовать await, т.к. будет ошбика, что await используется вне функции.
Как быть? """
Мои идеи:
- Остановить текущий
current_event_loopсоздатьnew_event_loop, выполнить мою задачу вnew_event_loopи удалить его. Продолжить выполнениеcurrent_event_loop. Проблема -current_event_loopникак не реагирует наcurrent_event_loop.stop()и продолжает выполняться. Методclose()остановит его, но тогда его больше никак не запустить - Остановить
current_event_loopс помощью методаclose, достать из него задачи и поместить вnew_event_loop. Но как получить задачи изcurrent_event_loop? Не нашёл ничего ни в свойствах класса ни в методах. Искал с помощьюdir()и читал официальную документацию