Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Мне не заходит тренд на балетки (наверное потому что, когда ты 163, хочется подошву помощнее), но #MaisonMargiela купила бы)) Именно на балетках почему-то эта растопырка смотрится не так экстравагантно и даже загадошно ✨
Можно найти от 16300₽
https://t.me/dressed_to/15870
Maison Margiela squarelaced replica OG *very rare*
Размер 40it
Состояние отличное, есть небольшой дефект на заднике
Цена 45.590р
#maisonmargiela#instock
@siberiaaccount
Maison Margiela squarelaced replica OG *very rare*
Размер 40it
Состояние отличное, есть небольшой дефект на заднике
Цена 45.590р
#maisonmargiela#instock
@siberiaaccount
Анонсирована вторая коллаборация Maison Margiela X Gentle Monster. Оправа из кожи выглядит весьма эффектно. Единственный вопрос сколько очки продержатся в приличном виде, учитывая окрашенный материал, выделения желёз, косметические и тональные средства. Похоже, это очковый кутюр, чтобы купить, хранить в коробочке и носить редко.
#maisonmargiela#gentlemonster
🏅Maison Margiela By the Fireplace
Этот аромат любим как мужчинами, так и женщинами, благодаря успокаивающему ароматическому впечатлению, которое он оставляет после себя. By the Fireplace перенесет вас в холодную зимнюю ночь с потрескивающим, уютным камином, дарящим вам успокаивающее тепло.
СТОИМОСТЬ 💵
т/в Maison Margiela By the Fireplace, 100 мл – 15 550 руб
🏅Le Labo Santal 33
Чувственный и опьяняющий, аромат сочетает в себе пряный кардамон с успокаивающими нотами фиалки и ириса. Сладкое сандаловое дерево и земляной кедр прокладывают путь к оркестру кожистых, пряных и мускусных нот, которые делают этот аромат таким успокаивающим и роскошным одновременно.
СТОИМОСТЬ 💵
п/в Le Labo Santal 33, 100 мл – 25 200 руб
п/в Le Labo Santal 33, 100 мл ТЕСТЕР – 19 000 руб
п/в Le Labo Santal 33, 10 мл – 3 400 руб
п/в Le Labo Santal 33, 1,5 мл – 1 500 руб
#МужскиеАроматы
#ЖенскиеАроматы
#LeLabo
#MaisonMargiela
⚫️ Для заказа и по всем вопросам - @originalproduct_new