Запустите асинхронную функцию из функции синхронизации в Python [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Запустите асинхронную функцию из функции синхронизации в Python [закрыто]

Сообщение Anonymous »

В моем приложении Python у меня есть функция синхронизации boo(), которая вызывается внутри цикла выполнения событий. boo() должен получить некоторые данные из foo(arg1, arg2), которая является async функцией.
К сожалению, Я не могу превратить boo() в асинхронную функцию. Он должен оставаться синхронизированным. (Это ограничение не в моих руках).
Как мне вызвать foo(arg1, arg2) из boo(), дождаться завершения, и продолжить выполнение?
Я пытался это сделать

Код: Выделить всё

data = asyncio.run(foo(arg1, arg2))
Но возникло следующее исключение:

Код: Выделить всё

  File "/root/.pycharm_helpers/pydevd_asyncio/pydevd_nest_asyncio.py", line 143, in run
loop.run_until_complete(task)
File "uvloop/loop.pyx", line 1511, in uvloop.loop.Loop.run_until_complete
File "uvloop/loop.pyx", line 1504, in uvloop.loop.Loop.run_until_complete
File "uvloop/loop.pyx", line 1377, in uvloop.loop.Loop.run_forever
File "uvloop/loop.pyx", line 518, in uvloop.loop.Loop._run
RuntimeError: this event loop is already running.
Я тоже пробовал:

Код: Выделить всё

loop = asyncio.get_event_loop()
data = loop.run_until_complete(foo(arg1, arg2))
И:

Код: Выделить всё

data = asyncio.run_in_executor(None, foo, arg1, arg2)
Все они выдавали одинаковые ошибки выполнения

Подробнее здесь: https://stackoverflow.com/questions/788 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»