Веб-версияОткрыть в Telegram

ПостКак запускать синхронные функции в асинхронном роуте FastAPI?

28 июня 2023
К
Коробка с питоном
Как запускать синхронные функции в асинхронном роуте FastAPI? Иногда так случается, что приходится использовать синхронный код в асинхронном роуте. Если мы попытаемся вызвать синхронную функцию в асинхронном коде - наш event loop заблокируется и всё "зависнет" до тех пор, пока синхронный код не отработает. Решений, как это сделать, на самом деле много. Самый простой вариант, который предоставляет FastAPI (а если быть точнее - Starlette, который использует anyio) - функция run_in_threadpool, которая запустит синхронный код в потоке: @app.get("/") async def my_router(): result = await service.execute() client = SyncClient() return await run_in_threadpool(client.execute, data=result) Кстати, BackgroundTask использует тот же самый способ, только он не возвращает результат выполнения. А как бы вы решали/решаете такую проблему? Пишите в комментариях 😎 ! #fastapi #anyio
8 · 757 ·

Рядом в ленте

ККоробка с питономЗачем нужно делать кастомную базовую Pydantic модель? Сейчас некоторые со мной не согласятся, но я часто рекомендую делать базовую pydantic модель и наследоватьККоробка с питономАвтор Propan на Habr'е написал статью "Messaging для чайников. Утилизируем все возможности RabbitMQ на Python", где объясняет основы работы с этим брокером сооб
это сообщение
ККоробка с питономРелиз FastAPI 0.100.0🔥 Себастьян закончил обновление pydantic-а. Теперь можно насладиться звуком ржавчины и приростом скорости при переходе на новую версию FastККоробка с питономYoyo В текущих реалиях практически любой сервис использующий реляционную БД не может обойтись без миграций. Так уж сложилось, что в нашем питонячьем мире, в про
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем