Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
23 маяINFERNAL ВНЕ КОНТРОЛЯ в Factory3💀
Дима INFERNAL - один из мастодонтов Сосновоборской диджей сцены, начал раскачивать танцполы ещё в далёком 2004 году. После долгого перерыва в начале 2023 года вернулся в мир музыки и вечеринок, чтобы снова заряжать своей энергией💥
Адепт разрывного и динамичного Drum & Bass. Настоящий генератор адской энергии. В его сетах - быстрые, ритмичные треки, тяжёлые басы и проверенные танцпол-уничтожители. Минимум пауз, максимум дропов - гарантированно!
Фронтмен команды SOLID BANGERZ😈
23 мая на вечеринке ВНЕ КОНТРОЛЯ:KDJS x Veterans Avenue Дима будет раздавать мега заряженный драм-энд-бейс. Всем быть🔊
📍Factory3 (большой зал) // Суббота, 23 мая, 23:50-06:00
Санкт-Петербург, Кожевенная линия, 40Д
м. Горный институт
🎫 Билеты для самых быстрых по спец цене + ВЕЛКОМ-ДРИНК🍸😱
Успей забрать здесь➡️[КУПИТЬ БИЛЕТ]
На входе цена поползёт вверх - рейверы, покупайте билеты заранее! Плохого не посоветуем😎
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
@kdj_crew x @VeteransAvenue
#ukgarage#dubstep#drumandbass#speedgarage#ukbounce#bailefunk#breaks
23.05 ВНЕ КОНТРОЛЯ: KDJS x Veterans Avenue @ Factory3
Старый кирпич и бетон. Дух рейва на окраине Лондона. И музыка. Настоящая. Громкая. Та, от которой дрожат стены, пол и всё внутри тебя🔊
* UK Garage * Drum and Bass * Dubstep * UK Bounce * Breaks и это не всё *
Коллаборация двенадцати диджеев, знающих толк в бэйс-музыке. Ломаный бит и прямая бочка. Мощный грув, быстрый бас и злые дропы. Всё для тебя🤌🏽
Мы не приглашаем - мы предупреждаем! Будет мощно и весело😄🔥
📍Factory3 (большой зал) // Суббота, 23 мая, 23:50-06:00
Санкт-Петербург, Кожевенная линия, 40Д
м. Горный институт
🎫 Билеты для самых быстрых по спец цене + ВЕЛКОМ-ДРИНК🍸😱
Успей забрать здесь➡️[КУПИТЬ БИЛЕТ]
На входе цена поползёт вверх - рейверы, покупайте билеты заранее! Плохого не посоветуем😎
P.S.: никакого дресс-кода - просто будь чистым, внешне и внутри. Нет правил, кроме одного - не нарушай личное пространство других. И конечно - тебе уже есть 18+ (ты же не хочешь, чтобы твои родители испортили вечеринку?)
Остальное - неважно😏
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
🗝🗝🗝🗝🗝🗝🗝🗝🗝🗝
@kdj_crew x @VeteransAvenue
#ukgarage#dubstep#drumandbass#speedgarage#ukbounce#bailefunk#breaks