Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
ATACMS (Army Tactical Missile System) – дальнобойная управляемая артиллерийская система американского производства. Поступила на вооружение в 1991 году.
ATACMS с фугасной частью используются для поражения укрепленных командных пунктов, штабов и инженерных сооружений, например, мостов. Ракеты с кассетной "начинкой" применяются по складам боеприпасов, аэродромам, а также подходят для уничтожения пехоты и легкой техники.
При этом ATACMS не имеют возможности маневрировать в полете и ставить помехи системам ПРО противника.
В феврале 2024 года США впервые поставили Украине около 100 ракет ATACMS. В июне они впервые были сбиты на российской территории при атаке на Крым. На данный момент у Киева осталось около 50 ракет.
#орудия_войны
#ATACMS
📢🔥 Ukraine's acquisition of ATACMS and Taurus missiles from the US falls short in offsetting Russia's superior firepower. Advisor to President Zelensky, Mikhail Podolyak, admits the quantity won't bridge the gap. Meanwhile, Ukraine aims to ramp up its own missile production. Beware! On September 27th, the Russian Foreign Ministry warned of Ukraine potentially targeting Russian cities, including Crimea, with ATACMS missiles. Social and residential areas could be at risk. Is conflict brewing? Former VUA Special Assistant, Dan Rice, hinted at an imminent US decision to provide Ukraine with ATACMS missiles. Medvedev claims NATO is pushing Russia towards direct confrontation. 🚨💣#Ukraine#Russia#ATACMS#Taurus
https://www.gazeta.ru/army/news/2023/09/27/21379363.shtml
Subscribe to @BadVolfNews
Государственный департамент принял решение, одобряющее возможную иностранную военную продажу Объединенным Арабским Эмиратам боеприпасов GMLR и ATACMS и связанных с ними элементов материально-технического обеспечения и программной поддержки.
Ориентировочная стоимость контракта 1,2 миллиарда долларов.
В поставку должны войти 259 транспортно-пусковых модулей с шестью корректируемыми ракетами GMLRS M31А1 Unitary с моноблочной боевой частью в каждом (суммарно 1554 ракеты) и 203 оперативно-тактические ракеты М57 ATACMS.
Также в контракт включены услуги по обучению персонала, учебное оборудование, разработка программного обеспечения, инженерные, технические и логистические услуги правительства США и подрядчиков; и другие сопутствующие элементы логистической и программной поддержки.
#США#ОАЭ#ATACMS#GMLR
Вестник NATO
⚡️Блиски исток — према наводу RUSI, САД, Израел и савезници су за 25 дана рата потрошили укупно 1.767 крстарећих/балистичких и 3.448 ПВО/ПРО ракета-пресретача, што је према проценама угрозило залихе које се за поједине ракете мере у данима. Детаљи потрошње:
⚫️Офанзивне ракете: 912 AGM-158 JASSM, 535 BGM-109 Tomahawk, 320 MGM-140 ATACMS/PrSM.
⚫️Дефанзивне/пресретачке ракете: 1.285 PAC-3, 563 Tamir (Iron Dome), 431 SM-2/SM-3/SM-6, 402 PAC-2, 340 THAAD, 135 David’s Sling, 122 Arrow-2/3, 117 PAC-2/PAC-3 (СА), 53 Aster.
→ Линк: /t.me/borbeni_efektivi
→ Линк: /t.me/borbeni_efektivi
🪖#Билтен〣#Блиски_исток〣#Иран〣#САД〣#Израел〣#RUSI〣#JASSM〣#Tomahawk〣#ATACMS〣#Patriot〣#THAAD〣#Arrow
🇷🇸https://t.me/borbeni_efektivi