Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Откройте для себя Республику Корея — страну традиций, технологий и вдохновения!
Корея — это удивительное сочетание древней культуры и ультрасовременного ритма. Здесь рядом с древними дворцами соседствуют небоскрёбы, а уличная еда конкурирует по популярности с ресторанами высокой кухни.
Почему стоит выбрать Корею для путешествия:
🔵 Уютные чайные домики и старинные кварталы Сеула
🔵 Футуристическая архитектура и модные районы, где рождаются мировые тренды
🔵 Роскошные термальные спа и горные пейзажи острова Чеджу
🔵 Неповторимая корейская кухня — от уличного кимчи до звёзд Мишлен
🔵 Безопасность, чистота и гостеприимство на каждом шагу
Авиакомпания T’way Air открывает новые возможности для путешествий — прямые рейсы соединяют Центральную Азию с Сеулом, делая Южную Корею ближе, чем когда-либо.
Планируйте поездку с Мой Агент — и откройте Корею по-новому!
#МойАгент#TwayAir#ЮжнаяКорея#путешествия#travelprofessionals#B2Btravel
Маврикий — остров безмятежности и гармонии, где бирюзовый океан встречает утончённый сервис🌊
Сеть Constance Hotels & Resorts воплощает дух острова в четырёх уникальных отелях — Constance Prince Maurice, Constance Belle Mare Plage, C Mauritius и Constance Sakoa Boutik Hotel.
Каждый из них создан для того, чтобы гости могли почувствовать настоящее очарование Индийского океана — будь то отдых в тишине лагун, семейные путешествия или активные каникулы у моря.
Забронировать отели Constance Hotels & Resorts можно на платформе myagent.online.
А сейчас — самое время это сделать: бронирования участвуют в акции «С Мой Агент в зиму!», где ваши продажи приносят не только удовольствие клиентам, но и бонусы вам.
Больше информации об отелях Constance доступно в нашем вебинаре⏪️
#МойАгент#ConstanceHotels#Маврикий#отдых#travelprofessionals#B2Btravel#акция#зимнийсезон
Новый год уже не за горами, и отели начинают раскрывать свои праздничные программы✨
Дубай — одно из самых ярких направлений для встречи Нового года: роскошь, стиль и незабываемая атмосфера мегаполиса на берегу Персидского залива.
Address Beach Resort 5* — идеальное место, где городской ритм сочетается с курортным комфортом премиум-класса. Отель расположен в самом сердце JBR, рядом с Dubai Marina, The Walk, пляжем The Beach и самым большим колесом обозрения в мире — Ain Dubai.
Новогодняя программа:
начало — 20:30, до полуночи
стоимость — от 555 AED(около 12,500 руб.)
гости могут выбрать одну из нескольких зон в отеле для празднования
📄 Подробная программа празднования — в прикреплённом файле.
Хотите узнать больше об отелях Emaar Group?
Смотрите запись нашего вебинара
#МойАгент#EmaarHotels#Dubai#AddressBeachResort#NewYear2026#travelprofessionals#отелиДубая