Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌟🌟🌟🌟🌟🌟🌟🌟
🌟🌟🌟🌟🌟🌟
Смотрим новый сезон и вспоминаем iconic макияж Оди из 2-го сезона!☀️
Образ максимально простой, но очень эффектный: смелые тени, тёмная подводка вокруг глаз и натуральная кожа без лишнего глянца. Такой макияж выглядит гранжево и небрежно — и в этом весь вайб👣
⏺ Палетка теней Beware Of Witches #magicalpower
⏺Подводка кремовая Miraculous #miraculouseyes
⏺Карандаш для губ SWEET TREAT #cherryontop, № 102 Bingsu
⏺Тональная основа LIGHTWEIGHT FOUNDATION #covergirl, № 002 Melon Smoothie
Кто уже посмотрел первые серии нового сезона?🌱
#sodainspiration
Образ, пропитанный ветром с вересковых холмов.
Нежность и буря, утончённость и страсть — макияж, вдохновлённый новой ролью Марго Робби в предстоящем фильме «Грозовой перевал». 🤩
🤩Карандаш для губ SWEET TREAT #cherryontop, №101 Cupcake — мягкий контур, как утренний румянец на холодном ветру.
🤩Хайлайтер MAGELLANIC CLOUD #billionstars — свет звёзд, будто отражение луны над пустошью.
🤩Помада Double Tornado #magicalpower (коллекция Winx, 003 Fearsome) — выразительный акцент, соединяющий силу и женственность.
🤩Румяна #rosycheeks, №101 Cherry Cake — лёгкий румянец жизни в холодных тонах Йоркшира.
Создай свой собственный шторм чувств вместе с soda🤩
Уже ждёте выход фильма?
#sodainspiration
⭐️Назад в 2006!
⭐️
Глянцевые веки, драматичные ресницы и контур губ, который виден издалека — мейкап в стиле нулевых снова в тренде, и мы знаем, как его повторить.
❤️ Тебе понадобятся:
Палетка Soda Chan Electro World #softdivalution — для серебристого сияния на веках
🌟Румяна #rosycheeks, № 103 Perfect Peach — лёгкий розовый для свежести
🌟Хайлайтер Soda Role Model #softdivalution — сияй, как айпод на солнечном свету
🌟 Карандаш для губ SWEET TREAT #cherryontop, № 104 Taiyaki и бальзам для губ Dark Chaos #magicalpower из коллекции Winx, 302 Hypnosis — для ярких губ
🌟Подводка #eyeloveunicorns КАРАНДАШ ДЛЯ ГЛАЗ, 001 BLACK HEART и накладные ресницы Soda Chan Hypnotic Look #softdivalution — эффект кукольного взгляда
🎞️Немного ностальгии, немного драмы — и ты снова на школьной дискотеке 2006 года, только в 2025.
Макияж какого года разобрать следующим ?
☺️
#sodainspiration