Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#Elezioni#NuovaZelanda
Oggi si vota in Nuova Zelanda!
Abbiamo creato delle schede in cui potete vedere i partiti principali e dove si posizionano ideologicamente.
🔽
https://tinyurl.com/5n6e7v5s
@OsservatorioEsteri
#Lituania#IndoPacifico
Il governo lituano ha pubblicato il primo documento comprensivo sulla “Strategia lituana per l’Indo-Pacifico” della sua storia.
Tale strategia poggerà su tre pilastri:
•Potenziamento della collaborazione e del dialogo politico con le nazioni dell’Indo-Pacifico, per un miglioramento delle proprie competenze ed esperienze nel contrasto alle minacce ibride e nei settori della difesa e della cybersicurezza.
In tal senso, fondamentale è il riferimento alla #Cina: “La sua attitudine rispetto ai diritti umani e l’ordine internazionale fondato su regole costituisce una minaccia significativa per le democrazie libere ed aperte.”
•Costruire e sviluppare partnerships economiche nei settori del commercio, degli investimenti, della scienza, delle tecnologie e dell’innovazione. Con una particolare attenzione alla diversificazione delle catene di approvvigionamento e della resistenza alla coercizione di natura economica.
Con riguardo a #Taiwan, la Lituania ambisce a consolidare la cooperazione reciproca nell’industria tecnologica, nel rafforzamento delle proprie capacità di difesa e nella promozione della democrazia.
•Soft power, stabilendo piattaforme per un consolidamento delle relazioni people-to-people, per gli scambi nelle aree della scienza, della cultura, dell’educazione e dell’empowerment giovanile e femminile e per una promozione dello status della Lituania come uno Stato democratico e progressista che attragga talenti.
Qui potete trovare il testo completo, comprensivo del disegno relativo alle future relazioni con #Giappone, #NuovaZelanda, #Australia, #CoreadelSud ed #India.
@OsservatorioEsteri
#ProssimeElezioni🗓
Le elezioni che seguiremo prossimamente sono:
🇧🇬#Bulgaria: #parlamentari, il 19 aprile;
🇬🇧🏴#RegnoUnito: parlamentari in #Scozia, il 7 maggio;
🇬🇧🏴 Regno Unito: parlamentari in #Galles, il 7 maggio;
🇨🇻#CapoVerde: parlamentari, il 17 maggio;
🇪🇸#Spagna: #regionali in #Andalusia, il 17 maggio;
🇨🇾#Cipro: parlamentari, il 24 maggio;
🇮🇹#Italia: #comunali, il 24 e il 25 maggio;
🇨🇴#Colombia: #presidenziali, il 31 maggio;
🇦🇲#Armenia: parlamentari, il 7 giugno;
🇮🇸#Islanda: #referendum, il 29 agosto;
🇭🇹#Haiti: presidenziali e parlamentari, il 30 agosto;
🇩🇪#Germania: #statali in #SassoniaAnhalt, il 6 settembre;
🇸🇪#Svezia: parlamentari, il 13 settembre;
🇩🇪 Germania: statali a #Berlino e nel #MeclemburgoPomeraniaAnteriore, il 20 settembre;
🇲🇦#Marocco: parlamentari, il 23 settembre;
🇱🇻#Lettonia: parlamentari, il 3 ottobre;
🇧🇦#BosniaErzegovina: parlamentari e presidenziali, il 4 ottobre;
🇧🇷#Brasile: presidenziali e parlamentari, il 4 ottobre;
🇺🇸#StatiUniti: parlamentari e statali, il 3 novembre;
🇳🇿#NuovaZelanda: parlamentari, il 7 novembre;
🇧🇬 Bulgaria: presidenziali, l'8 novembre;
🇨🇻 Capo Verde: presidenziali, il 15 novembre;
🇦🇺#Australia: statali nel #Victoria, il 28 novembre.
Sono segnate in grassetto le elezioni previste nel corso del mese di aprile.
@TuttoElezioni
#ProssimeElezioni🗓
❗️Calendario aggiornato
Le elezioni che seguiremo prossimamente sono:
🇵🇪#Perù: #presidenziali e #parlamentari, il 12 aprile;
🇭🇺#Ungheria: parlamentari, il 12 aprile;
🇧🇬#Bulgaria: parlamentari, il 19 aprile;
🇬🇧🏴#RegnoUnito: parlamentari in #Scozia, il 7 maggio;
🇬🇧🏴 Regno Unito: parlamentari in #Galles, il 7 maggio;
🇨🇻#CapoVerde: parlamentari, il 17 maggio;
🇪🇸#Spagna: #regionali in #Andalusia, il 17 maggio;
🇨🇾#Cipro: parlamentari, il 24 maggio;
🇮🇹#Italia: #comunali, il 24 e il 25 maggio;
🇨🇴#Colombia: presidenziali, il 31 maggio;
🇦🇲#Armenia: parlamentari, il 7 giugno;
🇮🇸#Islanda: #referendum, il 29 agosto;
🇭🇹#Haiti: presidenziali e parlamentari, il 30 agosto;
🇩🇪#Germania: #statali in #SassoniaAnhalt, il 6 settembre;
🇸🇪#Svezia: parlamentari, il 13 settembre;
🇩🇪 Germania: statali a #Berlino e nel #MeclemburgoPomeraniaAnteriore, il 20 settembre;
🇲🇦#Marocco: parlamentari, il 23 settembre;
🇱🇻#Lettonia: parlamentari, il 3 ottobre;
🇧🇦#BosniaErzegovina: parlamentari e presidenziali, il 4 ottobre;
🇧🇷#Brasile: presidenziali e parlamentari, il 4 ottobre;
🇳🇿#NuovaZelanda: parlamentari, il 7 novembre;
🇺🇸#StatiUniti: #parlamentari e #statali, il 3 novembre;
🇧🇬 Bulgaria: presidenziali, l'8 novembre;
🇨🇻 Capo Verde: presidenziali, il 15 novembre;
🇦🇺#Australia: statali nel #Victoria, il 28 novembre.
Sono segnate in grassetto le elezioni previste nel corso del mese di aprile.
@TuttoElezioni