Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
📸Распаковка Waizowl Triaina - в наличии!
🔵Два цвета: Белая-Riptide и Черная-Abyss.
🔵Корпус сделан из композитного материала, а именно смеси Поликарбоната и Стекловолокна, максимальная прочность и жесткость корпуса.
🔵Вес 49 грамм, размеры 122x64x36 миллиметров. Симметричная форма с центральным расположением горба подойдет для следующих типов хвата и длины ладони: Когтеовой хват (17.5-20) Ладонный хват (16.5-18), Пальцевый хват (18.5-21).
🔵Внутри установлены новые Оптические переключатели TTC, энкодер TTC Gold, кастомный сенсор PAW3950 HAWKEYE, датчик с экстремальной производительностью и низким энергопотреблением Nordic 54L15.
Цена: 6.990₽ - на ReShip.pro🛍️
САЙТ • МЕНЕДЖЕР • #WAIZOWL
🔱НОВИНКА ОТ WAIZOWL🔱
— Бренд давно не радовал нас новинками и на днях представил свежую модель Waizowl Triaina:
🔵Два цвета: Белая-Riptide и Черная-Abyss.
🔵Корпус сделан из композитного материала, а именно смеси Поликарбоната и Стекловолокна, максимальная прочность и жесткость корпуса.
🔵Вес 49 грамм, размеры 122x64x36 миллиметров. Симметричная форма с центральным расположением горба подойдет для следующих типов хвата и длины ладони: Когтеовой хват (17.5-20) Ладонный хват (16.5-18), Пальцевый хват (18.5-21).
🔵Внутри установлены новые Оптические переключатели TTC, энкодер TTC Gold, кастомный сенсор PWA3950 HAWKEYE, датчик с экстремальной производительностью и низким энергопотреблением Nordic 54L15.
🥇Цена 8.390₽ 7.551₽ — Cкидка 10% на предзаказ до 30-го числа.
САЙТ • МЕНЕДЖЕР • #WAIZOWL
🦔Waizowl OGM Pro V2 Poseidon в наличии! Лимитированная расцветка которая не будет пополняться после солд аута.
🔵Сенсор PAW3950
🔵Переключатели оптические Omron
🔵Супер цепкое покрытие
🔵Донгл 8.000hz в комплекте
🔵Вес 49 грамм
— Эргономичная мышка средних размеров, горб в центре и небольшой наклон клавиш, подойдет для Ладонного и Когтевого хвата.
💵Цена: 8.790₽ на ReShip.pro
САЙТ • МЕНЕДЖЕР • #WAIZOWL
🛍️Новая лимитированная расцветка OGM Pro V2 — Poseidon уже скоро в ReShip!
Оформляй предзаказ прямо сейчас и получи скидку🔤
— Лимитированное издание - количество ограничено!
➖Цена: 8 490 ₽
➖Доступно на ReShip.pro
КАТАЛОГ • МЕНЕДЖЕР • #WAIZOWL
⏰WAIZOWL пополнили коллекцию OGM PRO V2 расцветкой POSEIDON!
☁️Сенсор PAW3950
☁️Переключатели оптические Omron
☁️Супер цепкое покрытие
☁️Донгл 8.000hz в комплекте
☁️Вес 49 грамм
— Уникальная эргономичная форма с детализированным дизайном богини, создана для Когтевого и Ладонного хвата
💳Цена со скидкой на предзаказ 8.490₽ — уже на ReShip.pro
КАТАЛОГ • МЕНЕДЖЕР • #WAIZOWL
🌸Waizowl OGM Pro V2 в расцветках Purple Fade и Blue Fade
🔘Сенсор PAW3950
🔘Переключатели Huano Transparent Green Shell White Dot
🔘Донгл 8к в комплекте
🔘Вес 49 грамм
Эргономичная мышка средних размеров, с высоким горбом по середине и высоким расположением клавиш, подойдет для средней и большой ладони (хват Ладонный/Когтевой)
💳Цена 7.990₽
ОФОРМИТЬ ЗАКАЗ • КАТАЛОГ • #WAIZOWL
🌒Переходи на темную сторону с Waizowl OGM Pro V2 HADES
🟡Сенсор PAW3950
🟡RAESHA Optical Switch
🟡Супер цепкое покрытие
🟡Донгл 8к в комплекте
🟡Вес 49 грамм
🌒Уникальная эргономичная форма с детализированным дизайном богини, не упустите шанс добавить этот шедевр в свою коллекцию всего за 8.790₽!
ОФОРМИТЬ ЗАКАЗ • КАТАЛОГ • #WAIZOWL
👑Мышка Waizowl Cloud XS с потрясающим дизайном, созданная с любовью к совам, уже в продаже!
~ Сенсор Paw3950
~ Оптические переключатели RAESHA
~ 8к донгл в комплекте
~ Вес 45 грамм
✨ Отлично подходит для ладонного и когтевого хвата, обеспечивая полную поддержку ладони и комфортное размещение пальцев по бокам.
ОФОРМИТЬ ЗАКАЗ • КАТАЛОГ • #WAIZOWL