У меня есть колба среднего размера, которую я хочу преобразовать в asyncio
.В настоящее время моя проблема состоит в том, что у меня есть некоторые сетевые вызовы 10-12 функции в стек вызовов, но я подведу итог моей проблемы на простом примере:
import asyncio
async def blocking_task():
await asyncio.sleep(1)
def sync_method():
await blocking_task() # Error here. This is not async method, but it is called by async method in the event loop
async def async_enrty():
sync_method()
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(async_enrty())
loop.close()
main()
Допустим, у меня есть задача блокировки - blocking_task()
иЯ хочу ждать этого.Поскольку стек вызовов довольно большой, я должен сделать каждую функцию асинхронной и ожидать каждой вызываемой функции, пока она не достигнет моего blocking_function
.Поскольку я вызываю эту функцию в цикле обработки событий, есть ли способ ее ожидания без использования async / await вплоть до функции блокировки?