Остановить 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 используется вне функции.
    Как быть? """

Мои идеи:

  1. Остановить текущий current_event_loop создать new_event_loop, выполнить мою задачу в new_event_loop и удалить его. Продолжить выполнение current_event_loop. Проблема - current_event_loop никак не реагирует на current_event_loop.stop() и продолжает выполняться. Метод close() остановит его, но тогда его больше никак не запустить
  2. Остановить current_event_loop с помощью метода close, достать из него задачи и поместить в new_event_loop. Но как получить задачи из current_event_loop? Не нашёл ничего ни в свойствах класса ни в методах. Искал с помощью dir() и читал официальную документацию

Ответы (0 шт):