Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
“Dio non benedice mai la #violenza, non approva mai l’approfittarsi degli altri o il frenetico #abuso dell’unica Terra che sta sfigurando il Creato, una carezza del Creatore”. #LeoneXIV lo scrive nell’introduzione al libro “Peace Be with You!”, versione inglese di “E pace sia!” e dal 24 febbraio nelle librerie degli Stati Uniti e dei Paesi anglofoni.
Il Papa descrive la pace come impegno quotidiano e concreto: “Pace significa insegnare ai bambini a rispettare gli altri e a non bullizzare gli altri quando giocano”. “Pace significa vincere il nostro orgoglio personale e lasciare spazio all’altro – prosegue Leone XIV – nella nostra famiglia, sul lavoro, nello sport”. Per il Pontefice la pace “è quando il nostro cuore e la nostra vita sono abitati dal silenzio, dalla meditazione e dall’ascolto di Dio”.
Il Santo Padre affida infine alla politica e alla comunità internazionale “la responsabilità di agevolare la mediazione nei conflitti, utilizzando l’arte del dialogo e della diplomazia”. Il Papa conclude con le parole di sant’Agostino: “Signore Dio, donaci la pace, la pace del riposo, la pace del sabato, la pace senza tramonto”, chiedendo per il mondo intero “la grazia benedetta di una pace giusta e duratura”. Il volume, edito da Harper Collins, è introdotto dal testo inedito del Pontefice.
“Ogni #abuso è inaccettabile. E la #Chiesa, di fronte agli abusi sessuali al suo interno, in passato ha fallito. La Chiesa avrebbe dovuto, senza alcuna esitazione e pienamente, schierarsi dalla parte delle vittime e contrastare ogni abuso con tutti i mezzi possibili. Ma purtroppo ciò è avvenuto troppo poco, a causa di incredulità, sottovalutazione o per tutelare la propria reputazione”. Lo afferma mons. Luc Terlinden, arcivescovo di Malines-Bruxelles e referente per gli abusi sessuali della Chiesa cattolica in #Belgio, alla vigilia della messa in onda su Canvas del documentario “Lettera al Papa”, seguito della serie Godvergeten. Il presule ricorda che “i vescovi hanno ripetutamente chiesto scusa” e annuncia che “continueremo a farlo e a prenderci le nostre responsabilità”. Sul fronte istituzionale, mons. Terlinden sostiene “pienamente” la proposta di un quadro legislativo generale per tutte le vittime di abusi sessuali: “La Chiesa chiede un trattamento uguale per tutte le vittime”. Domani, mercoledì 4 marzo, parteciperà a un incontro con il ministro Verlinden insieme a una delegazione di vittime e alla coordinatrice nazionale Jessika Soors. Dall’ottobre 2025 oltre 550 vittime hanno ricevuto un sostegno aggiuntivo di 3.000 euro ciascuna per accedere a cure psicoterapeutiche, in attesa del quadro definitivo da parte delle autorità civili.