Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🆕WLmouse Ying получили долгожданное обновление!🆕
— Теперь корпус мышки полностью выполнен из магниевого сплава:
🔴Таже форма, размер и характеристики.
🔴Все ощущения от мышки стали на голову выше, эталонная сборка без скрипов и люфтов, максимально ровное дно из за жесткости корпуса, никаких проблем со временем.
🔴Однако, мышка стала весить на 7 грамм больше, чем прошлая, карбоновая версия.
На выбор две версии, на механических и оптических переключателях, а так же огромное количество ярких расцветок.
🎁 WLmouse Ying Magnesium - 13.490₽ - 13.990₽
САЙТ • МЕНЕДЖЕР • #WLMOUSE
WLmouse YING в карбоне — всё. Конец? ❌
— Многими любимая WLmouse YING в её привычном карбоновом исполнении официально снялась с производства. Если вы откладывали покупку этой модели на потом — сейчас тот самый момент, когда нужно решаться. Запасы у ритейлеров не бесконечны!📦
Что дальше❓ Ходят слухи, что YING вернется в новом обличии. Вероятнее всего, нас ждет цельнометаллический корпус без отверстий (как у Huan). Хоть это и пойдет модели на пользу, невероятный внешний вид будет утерян..
🎁Цена 16.990₽- успей забрать, пока она не стала раритетом*
САЙТ • МЕНЕДЖЕР • #WLMOUSE
🎄Мышки и клавиатуры серии Huan от WLmouse в наличии!
— Доступные цвета мышек:
🔴Black
🟢Design Version
🔴Pink
🟢Silver
🔴White
🟢White-Pink
🔴White-Purple
— Доступные цвета клавиатур:
🟢Black
🔴Pink
🟢White
Все предзаказы будут выданы и отправлены завтра 🙏
САЙТ • МЕНЕДЖЕР • #WLMOUSE
🐱Новая модель мышка WLmouse Huan. Цельно металлический корпус без отверстий, доступна в нескольких расцветках, 4 из которых лимитированные.
⚪️ Сенсор PAW3950HS
⚪️Переключатели Omron Optical
⚪️Донгл 8.000hz с экраном и колонкой.
⚪️Вес 48 грамм
— Симметричная форма средних размеров, ориентиром формы стала Viper Mini, отлично подойдет для Когтевого хвата.
👛Цена начинается с 15.490₽ за стандартные расцветки, подробнее на ReShip.pro
САЙТ • МЕНЕДЖЕР • #WLMOUSE
😺Новая клавиатура от WLmouse - HUAN63! Это магнитная клавиатура, с модульным, сменным дизайном.
🟣Переключатели Gateron Starlight Switch
🟣Корпус из алюминия
🟣Формфактор 60%
🟣8K подключение + 256K сканирование
🟣Гаскет структура с большим количеством шумоизоляции
💳Предзаказ уже открыт, цена 27.490₽ на ReShip.pro.
САЙТ • МЕНЕДЖЕР • #WLMOUSE
🔥 Новая клавиатура Ying75 от WLMouse — скоро в наличии..
МАКСИМУМ ТОЧНОСТИ — МИНИМАЛЬНЫЙ ОТКЛИК
✨Что внутри?
— Корпус: Углеродный Карбон
— Переключатели: Hot-Swappable Hall Effect (Nightfall / Shadow)
— Кейкапы: Прозрачные (PC) или белые ⚪️ PBT с гравировкой сбоку
— Частота опроса: до 8000Hz
— Rapid Trigger: точность до 0.005 мм
Также есть вариант с русской 🇷🇺 гравировкой символов!
⚡️YING75 — клавиатура для тех, кто не идёт на компромиссы.
💸 Цена: 23.990 ₽
🔔 В наличии 10го июня
ОФОРМИТЬ ЗАКАЗ • КАТАЛОГ • #WLMOUSE