Короткий неблокирующий код можно вызвать напрямую. Блокирующее I/O выносят через asyncio.to_thread или executor, а тяжёлые CPU-вычисления часто — в отдельные процессы.
Как запустить синхронный код из асинхронного контекста?
Короткий неблокирующий код можно вызвать напрямую. Блокирующее I/O выносят через asyncio.to_thread или executor, а тяжёлые CPU-вычисления часто — в отдельные процессы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Короткий неблокирующий код можно вызвать напрямую. Блокирующее I/O выносят через asyncio.to_thread или executor, а тяжёлые CPU-вычисления часто — в отдельные процессы.
result = await asyncio.to_thread(sync_function, argument)
Это перенос исполнения, а не превращение функции в асинхронную. Ограничьте число одновременных задач и проверьте потокобезопасность зависимостей. Отмена await не гарантирует остановки функции в другом потоке; тайм-ауты внешних операций нужны отдельно.