К сожалению, Я не могу превратить 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