Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
📝Chronik der Spezialoperation📝
für den 28. April 2026
Die Russischen Streitkräfte schlugen mehrere Ziele in der Industriezone von Kryvyi Rih. Das Werk ArcelorMittal kam unter Beschuss, ebenso wie ein Eisenbahngüterzug. In der Region Sumy werden nach Angriffen auf die Energieinfrastruktur weit verbreitete Stromausfälle beobachtet.
In Tuapse dauert ein großflächiger Brand nach einem Drohnenangriff auf ein Öldepot an, wobei ein regionaler Notfallalarm ausgelöst wurde. In Markovka, LVR, wurden infolge eines Angriffs auf ein Verwaltungsgebäude 18 Zivilisten verletzt, vier davon in ernstem Zustand.
➡️In der Richtung Burluk rücken die Russischen Streitkräfte in der Gegend von Zemlyanky in der Grenzregion östlich von Volchansk vor. Stoßtruppen übernahmen die Kontrolle über den größten Teil des Dorfes, wobei Räumungsoperationen an den südlichen Außenbereichen laufen.
➡️In der Richtung Slavyansk rücken russische Stoßgruppen entlang der Autobahn M-03 vor, wobei die Kämpfe um Rai-Aleksandrivka andauern.
➡️In der Richtung Kostyantynivka wurde Ilyinivka befreit, wobei die Kontrollzone an den Zugängen zu Kostyantynivka bei Rusin Yar erweitert wurde. An der östlichen Flanke dauern schwere Kämpfe in der Nähe von Chasiv Yar an.
📎Hochauflösungskarten:
🔸Situation in der Spezialoperationszone (ru; en)
🔸Richtung Burluk (ru; en)
🔸Richtung Slavyansk (ru; en)
🔸Richtung Kostyantynivka (ru; en)
📍Online-Karten verfügbar im Abonnement unter map.rybar.ru
#Zusammenfassung#Karte#LVR#Russland#Sumy#Tuapse#Ukraine
✈️RU | ✈️EN | ✉️MAX
✉️VK | ✉️RuTube | ✉️OK | ✉️Zen
💸Unterstützen Sie unsOriginalnachricht
#Italia🇮🇹
#Regionali
#Veneto
❗️Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici) è stato eletto Presidente della Giunta regionale del Veneto.
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 2.590/4.729 (54,77%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 63,87%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 29,30%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,18%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Risultati parziali.
Sezioni scrutinate: 1.661/4.729 (35,12%).
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 62,97%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,23%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 5,02%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Proiezione di Opinio Italia.
Emittente: RaiNews24.
Campione: 6%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 60,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,8%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 6,6%
@TuttoElezioni
#Italia🇮🇹
#Regionali
#Veneto
Exit poll di Opinio Italia.
Emittente: RaiNews24.
Campione: 80%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 59,0-63,0%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 30,0-34,0%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 3,5-5,5%
@TuttoElezioni
#Sondaggi
#Italia🇮🇹
#Regionali
#Veneto
Sondaggio di Bidimedia.
Data: 7 novembre 2025.
Campione: 1.000 persone.
Margine di errore: ±3,1%.
🟦 Alberto #Stefani (#LSP|PfE; sostenuto anche da #FdI|ECR, #FI|PPE, #NM|PPE, #UdC|PPE, #PdF|Destra cristiana, #PRI|Centro, #DCR|Centro, #LVR|Autonomisti, liste minori e civici): 64,5%
🟧 Giovanni #Manildo (#PD|S&D; sostenuto anche da #M5S|LEFT, #AVS|G/EFA|LEFT, #IV|RE, #Az|RE, #PiùEU|RE, #PSI|S&D, #Pos|S&D, #Volt|G/EFA, #PRC|LEFT, liste minori e civici): 32,6%
⬛️ Riccardo #Szumski (#Italexit|Euroscetticismo e liste minori): 1,6%
⬜️ Fabio #Bui (civico): 0,8%
🟫 Marco #Rizzo (#DSP|Sovranisti euroscettici): N.D.
@TuttoElezioni