Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🇬🇧 Une grève des conducteurs du métro a débuté à Londres, première d’une série de six mouvements de 24 heures prévus cette année.
Contrairement à septembre dernier, où tout le métro avait été paralysé pendant plusieurs jours, seules deux lignes - très fréquentées - sont cette fois totalement à l’arrêt: la ligne Piccadilly et la ligne Circle.
Le mouvement est organisé par le syndicat des transports qui s’oppose à l’introduction d’un calendrier de quatre jours plus intensif.
#londres#métro#grève
🇰🇪Des milliers de passagers se trouvent bloqués à l’aéroport international de Nairobi en raison d’une grève, rapporte le site Africanews. Le mouvement est organisé par le syndicat des travailleurs des aéroports du Kenya.
La grève a débuté lundi, après un ultimatum de sept jours lancé par le syndicat, les négociations prolongées avec l’Autorité de l’aviation civile du Kenya concernant l’augmentation des salaires et l’amélioration des conditions de travail n’ayant jusqu’ici donné que peu de résultats concrets. Ce mouvement a entraîné des réacheminements, des retards et des annulations de vols, affectant les compagnies opérant tant sur les lignes nationales qu’internationales.
Le syndicat réclame également la mise en place de conventions collectives, la révision des salaires et l’inclusion des employés contractuels dans le régime de retraite.
#kenya#aéroport#grève
🇩🇪 D’importantes grèves des employés des transports publics se déroulent actuellement dans toute l’Allemagne. Les mouvements sociaux touchent tous les Länder à l’exception de la Basse-Saxe, où les parties au conflit salarial sont convenues de suspendre toute action de grève jusqu’à fin mars.
#allemagne#transports#grève
https://t.me/kamissokosekou3
🎓 Éducation : Fin de débrayage à l'IUG, les enseignants suspendent leur mouvement de grève
Vers une normalisation des cours à l'Institut Universitaire de Gestion (IUG). Les comités syndicaux du SNEC et du SNESUP ont officiellement annoncé la levée de leur mot d'ordre de protestation, marquant une trêve attendue dans le bras de fer qui les opposait aux autorités. Cette décision de suspendre les arrêts de travail ouvre la voie à un retour immédiat des étudiants dans les amphithéâtres, après une période d'incertitude qui pesait sur le calendrier académique. Si les revendications restent sur la table, ce geste des enseignants est perçu comme une volonté de privilégier le dialogue et de sauver l'année universitaire en cours, au grand soulagement des parents et des apprenants.
Le retour en classe est-il selon vous le signe d'un accord durable ou d'une simple pause ? 🇲🇱📚 Que proposez-vous pour éviter que les grèves ne paralysent nos instituts à l'avenir ?
#Mali#Éducation#IUG#SNESUP#SNEC#Grève#Université#Maliactu
SYNABEF : C'est officiel !
Un preavis de #grève relatif de #15_points sur table par le SYNABEF.
Il s'agit de les régler ou d'observer une #grève de #soixante_douze (72) heures #reconductible à #cent_vingt (120) heures sur toute l'étendue du territoire national.
Cette grève débutera le #17_avril_2025 à 00 h 00 et #durera jusqu’au #26_avril_2025 à minuit.