Есть стэк вызова функций:
[main async func0] -> [sync func1] -> [sync func2] -> [async func3]
Как вызвать async func3 из func2 если func1 ничего не знает о асинхронности?
func2 передается в func1, как реализация интерфейса.
Если делать так:
from asgiref.sync import async_to_sync
def func2():
result = async_to_sync(func3)()
то получаем ошибку:
RuntimeError: You cannot use AsyncToSync in the same thread as an async event loop - just await the async function directly.
Но я не могу вызвать напрямую через await, т.к. func1 ничего не знает об асинхронности.