Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Здравствуйте, друзья! 👋
Ну что же, наконец-то близится весна и GP Promo приглашает Вас встретить еë в Axiom Pub вместе с группой "PsycheDelta"!
Будут всеми любимые новоорлеанские латино-блюзы, медленные, тягучие и качовые! И по специальной просьбе - немного настоящей латины с Кубы и Кабо-Верде!
- 19.00 диджеи GP Promo начнут создавать для Вас атмосферу;
- 20.00 выступление PsycheDelta.
Дата: 01.03.2025
Время: 19.00-23.00
Место: "Axiom Pub на Бауманской"
Адрес: Спартаковская пл., 16/15 ст2
Вход: свободный с вашей благодарностью. 🩷
Важно: бронируйте столики заранее +79647058888
#gppromo#psychedelta#blues#axiompub
Настало время Аксиома на Бауманской! 😎
Знаем, что вы любите это место, и, GP Promo, совместно с Axiom Pub, приглашают Вас в субботу на весенний блюзовый вечер с группой PSYCHEDELTA!
С нас - атмосфера и музыка, с Вас - настроение и танцы. 😏
В 19.00 вечер начнëт Павел Гор со своим разогревающим блюзовым сетом.
20.00 - 22.00 выступление PSYCHEDELTA.
22.00 - ... Сет от Вячеслава (Sly) Голованова.
Дата: 29.03.2024
Время: 19.00-23.00
Место: "Axiom Pub на Бауманской"
Адрес: Спартаковская пл., 16/15 ст2
Вход: свободный с вашей благодарностью. 🩷
Важно: бронируйте столики заранее +79031908089
#gppromo#psychedelta#blues#axiompub
Всем привет! 👋
Следующая по расписанию блюзовая воскресная вечеринка от нас и Axiom Pub.
В этот вечер создавать танцевальное настроение для Вас будет группа PsycheDELTA.
Коллектив регулярно играет на различных танцевальных фестивалях и в дополнительном представлении не нуждается.
За диджейскую часть в этот вечер будут отвечать Павел Гор и Антон Андреев!
Дата: 17.03.2024
Место: Axiom Pub
Спартаковская площадь, 16/15с2
Время: 20.00 - 00.00
Живая музыка: 21.00 - 23.00
Вход, как всегда: Free!
Ждëм Вас! 😉
PsycheDELTA ВК: https://vk.com/psychedelta
PsycheDELTA ТГ: https://t.me/psychedeltablues
Axiom pub ВК: https://m.vk.com/axiompub_msk
Axiom pub ТГ: https://t.me/axiompub_msk
#gppromo#blues#axiompub#psychedelta
«И снова вечеринка!»
Друзья, приглашаем всех провести воскресный вечер в Axiom Pub под блюзовую музыку от Владимира Бобошина и Степана Гречки.
Когда: 28.01.2024 20:00 – 00:00.
Живая музыка с 21.00.
Где: Axiom Pub
Спартаковская площадь, 16/15с2,
Вход: Свободный.
Благодарность приветствуется: https://www.donationalerts.com/r/gp_promotion
P.S. – Axoim Pub находится в 10 минутах пешком от ЛисоБорье, где будут мастер-классы Михайло с Настей!
P.P.S Бронируйте столики заранее.
#gppromotion#gppromo#блюз#blues