Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Master Class of an
International project
#ArtInSport
Of Liubov Barykina
In Switzerland, Zurich
2025 🇨🇭🇨🇭🇨🇭
Such a beautiful production
Was created in just one hour
Of a master class 🔥🔥🔥
#LiubovBarykina
#Creator
#Artist
#Choreographer
#Zurich
The international project
“Art in Sports”
will take place
in Zurich, Switzerland
very soon 🥇🏆🇨🇭
Date: 14.06.2025
Time: 10:30-13:30
#Dancing
#Painting
#Acting
#RhythmicGymnastics
#Zurich
#LiubovBarykina
🌸🌸🌸🤸♀️🎨🎭
Тренировочный процесс,
Танцевальная часть
мастер-класса,
который состоялся
14.06.2025 в Цюрихе,
Швейцарии
Международный проект
«Искусство в спорте»
Любови Барыкиной
Участие приняли
70 гимнасток
Швейцарии, в том
числе и чемпионы
страны 2025 года
🇨🇭🇨🇭🇨🇭❤️❤️❤️
#Dancing
#RhythmicGymnastics
#Painting
#Zurich
#Switzerland
#ArtInSport
#LiubovBarykina
14.06.2025 в Цюрихе,
Швейцарии состоялся
Международный проект
«Искусство в спорте»
Любови Барыкиной
Участие приняли
70 гимнасток
Швейцарии, в том
числе и чемпионы
страны 2025 года
🇨🇭🇨🇭🇨🇭❤️❤️❤️
#Dancing
#RhythmicGymnastics
#Painting
#Zurich
#Switzerland
#ArtInSport
#LiubovBarykina
🚢Zurich приобретает Beazley за £8,1 млрд: консолидация в специализированном страховании.
Швейцарская страховая группа Zurich Insurance Group объявила о покупке британского страховщика Beazley за £8,1 млрд ($10,8 млрд) после отклонённого ранее предложения на £7,7 млрд.
Beazley, обладающая значительным морским портфелем и платформой на рынке Lloyd’s, будет выведена с Лондонской фондовой биржи, но сохранит штаб-квартиру в Великобритании.
Объединённый бизнес страхования будет базироваться в Лондоне, усиливая позиции Zurich в сегментах морского страхования, военных рисков и других специализированных линиях.
Для судоходства сделка означает дальнейшую консолидацию страхового рынка и потенциальное усиление капитальной базы в морском андеррайтинге.
В условиях повышенных геополитических рисков и роста премий за военные риски - концентрация игроков может повлиять на условия страхования и ценообразование.
📌Zurich Insurance Group AG — швейцарская страховая компания, основанная в 1872 году; акции обращаются на SIX Swiss Exchange, компания является публичной и принадлежит институциональным и частным инвесторам.
#MarineInsurance#Zurich#Beazley#SpecialtyLines#WarRisk