Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#Ungheria🇭🇺
#Parlamentari
Grafico storico dell'affluenza.
Nel grafico allegato è mostrato l’andamento dell’affluenza nel corso della giornata elettorale, mettendo a confronto le diverse tornate dal 1994 al 2026.
Ogni linea rappresenta un anno elettorale; ogni puntino corrisponde a una rilevazione ufficiale effettuata a un orario specifico. In alcune elezioni i puntini compaiono in orari diversi perché, nel tempo, sono cambiati gli orari delle comunicazioni intermedie dei dati.
È molto in evidenza il dato del 2026, che si colloca sopra tutte le serie storiche per gran parte della giornata e chiude al 79,56%, il livello più alto dell’intero confronto.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
I risultati finali non saranno disponibili prima del 18 aprile. Continueremo comunque ad aggiornarvi con i dati ufficiali; nel frattempo, vi ringraziamo per aver seguito con noi le elezioni parlamentari in Ungheria.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
Il prossimo dato sull'affluenza, l'ultimo prima della fine della votazione, sarà reso noto in corrispondenza con la chiusura delle urne, in quanto riferito alle 18:30.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️La partecipazione elettorale alle 17:00 supera qualsiasi affluenza finale mai avuta nelle elezioni parlamentari del Paese.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️Affluenza ancora molto alta alle 13:00: 54,14%
Il dato continua a essere nettamente superiore a quello delle altre elezioni parlamentari:
- 2022: 40,01
- 2018: 42,43
- 2014: 34,33
- 2010: 35,88
- 2006: 38,22
- 2002: 40,19
- 1998: 32,58
La soglia dell'80% rappresenta uno scenario molto probabile, salvo un rallentamento marcato nel corso del pomeriggio.
@TuttoElezioni
#Ungheria🇭🇺
#Parlamentari
❗️Affluenza record alle 11:00: 37,98%
Il dato è nettamente superiore rispetto a qualsiasi altra elezione parlamentare:
- 2022: 25,77%
- 2018: 29,93%
- 2014: 23,23%
- 2010: 24,78%
- 2006: 27,73%
- 2002: 26,37%
- 1998: 23,66%
- 1994: 32,50%*
La proiezione aggiornata dell'affluenza finale è salita al 78-83% (valore centrale: 80,5%). La partecipazione nelle prime ore di voto è stata eccezionale; il dato delle 13:00 dirà con maggiore precisione se la soglia dell'80% di affluenza è alla portata.
* non è riportato il dato delle sole elezioni del 1990, in quanto non sono presenti suddivisioni orarie dell'affluenza, ma solo il valore finale (65,09%)
@TuttoElezioni