Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
from fastapi.concurrency import run_in_threadpool
async def execute(data: DataRequest) -> DataResponse:
try:
result = await run_in_threadpool(sync_function, data)
return DataResponse(data=result)
except Exception as e:
return DataResponse(
error=str(e),
success=False,
)
В общем работает нормально. Для всех вызовов под капотом используется общий тредпул, всё работает предсказуемо.
Но потребовалось изменить количество запускаемых в пуле потоков (по умолчанию создается 40 воркеров).
Так как дело происходит с FastAPI, делается это через lifespan используя настройки anyio:
import anyio
@asynccontextmanager
async def lifespan(app: FastAPI):
limiter = anyio.to_thread.current_default_thread_limiter()
limiter.total_tokens = 100
yield
# если вдруг нужно вернуть обратно
limiter.total_tokens = 40
Зачем менять количество воркеров?
- уменьшить, если оперативки мало (один тред занимает ~8мб)
- увеличить чтобы выдержать нагрузку
Если есть предложения получше при тех же вводных - предлагайте😉
#async
«Красный дьяволёнок», холст, масло, 50х50, Doping Pong, 2025
В сюжете картины переплетаются и наслаиваются сразу несколько мотивов, объединяя в абсолютно новый персонаж существо из древнегреческой мифологии – кентавра, образ Мальчиша, героя
«Сказки о Военной тайне, о Мальчише-Кибальчише и его твёрдом слове» Аркадия Гайдара, и совокупный героический архетип повести Павла Бляхина «Красные дьяволята» (Охота за голубой лисицей).
«Красный дьяволёнок» - визуальное воплощение советского романтизма, революционной поэтики и мифологизации советской истории.
Аукцион Vladey:
Участие онлайн и по телефону
Трансляция на сайте
Суббота, 29 ноября в 15:00
Лот 26 - https://vladey.net/ru/lot/14058
#dopingpong#red#devil#centaur#boy#vladey#vladeyart
Этапы работы арт-группы Doping Pong над картиной «Гермес. Новейшие мифы», 100х70, холст, акрил, Doping Pong, 2024
More info: Лот 49: https://vladey.net/ru/lot/12822
VLADEY 100х100
Живые торги
Участие онлайн и по телефону
Трансляция на сайте
Аукцион 7 сентября в 15:00
100 лотов со стартом 100€
#dopingpong#hermes#young#lord#football#art#russia#vladey#vladeyart#workinprogress#wip
Процесс работы арт-группы Doping-Pong над картиной
«Волшебница Изумрудного города», х/м, 70х100, Doping Pong, 2024.
VLADEY СЛИВКИ
Живой аукцион
Участие онлайн и по телефону
Трансляция на сайте
Вторник, 27 февраля в 19:00
More info: Лот 19 https://vladey.net/ru/lot/11614
#dopingpong#art#russia#georgia#moscow#tbilisi#thewizardoftheemeraldcity#oiloncanvas#ussretro#vladey#vladeyart#workinprogress#wip