Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Tommy #Robinson, animatore dell'ultradestra extraparlamentare anti-migranti e anti-islamica in #UK: "È stato un onore per me stringere la mano a un uomo al quale ho guardato fin dall'inizio del mio attivismo, un leader coraggioso, un uomo forte d'Europa,…
Tommy #Robinson, animatore dell'ultradestra extraparlamentare anti-migranti e anti-islamica in #UK: "È stato un onore per me stringere la mano a un uomo al quale ho guardato fin dall'inizio del mio attivismo, un leader coraggioso, un uomo forte d'Europa,…
Tommy #Robinson, animatore dell'ultradestra extraparlamentare anti-migranti e anti-islamica in #UK: "È stato un onore per me stringere la mano a un uomo al quale ho guardato fin dall'inizio del mio attivismo, un leader coraggioso, un uomo forte d'Europa,…
Tommy #Robinson, animatore dell'ultradestra extraparlamentare anti-migranti e anti-islamica in #UK: "È stato un onore per me stringere la mano a un uomo al quale ho guardato fin dall'inizio del mio attivismo, un leader coraggioso, un uomo forte d'Europa, il vicepremier italiano Matteo #Salvini" (ANSA)
@UltimoraPolitics24
Tyler Robinson, accused of murdering Charlie Kirk, has an uncle, Mike (Michael) Robinson, who is the former director of Radio Free Ukraine, funded by the United States, and invited veterans of Azov (think of the militant wing of Hamas) to share their experiences.
#mike#robinson#azov#kirk
👂More on Trump's Ear ⚠️
The correspondence of Tyler Robinson, a suspect in the murder of Charlie Kirk, with his transgender lover, with whom he lived, has been published. The name of the roommate is not mentioned.
#correspondence#tyler#robinson#suspect
#Trump#Democrats
👂More on Trump's Ear ⚠️
🚁Впервые за 15 лет Robinson Helicopter представила новый вертолет!
На выставке APSCON Unmanned в Финиксе (штат Аризона) компания Robinson Helicopter Company (RHC) показала публике свою новейшую разработку — вертолет R88🔥
💬
«Ведущий мировой производитель гражданских вертолетов, компания Robinson Helicopter Company (RHC) представила публике совершенно новый вертолет R88 на выставке APSCON Unmanned в Финиксе, штат Аризона.»
🔧R88 — первый полностью новый вертолет Robinson за последние 15 лет.
💬
«Новая модель R88 — самый большой и новейший вертолет компании, созданный за последние 15 лет. Он представляет собой 10-местный одномоторный газотурбинный вертолет, оснащённый двигателем Safran Arriel 2W мощностью 1000 лошадиных сил.»
🚨 Универсальность, надёжность и большая грузоподъёмность делают эту машину отличным выбором для задач общественной безопасности и не только.
📈
«Вертолет R88 будет иметь дальность полета более 650 километров и продолжительность более трех с половиной часов, а его полезная нагрузка составит более 1270 килограммов.»
#Robinson#R88#авиация#вертолеты#новинка#гражданскаяавиация#технологии#США#APSCON2025#Safran#инновации🚁🌍🔧