Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🇰🇭 Au Cambodge, des agriculteurs de la province de Kampong Speu ont participé à la course de chars à bœufs à l’approche du Nouvel An khmer, a rapporté l’agence Reuters.
#cambodge#agriculteurs#course#bœufs
🇹🇭💥🇰🇭Une histoire de Thaïlande – Cambodge tragédie, ou Aie Honte la France!
La récente escalade des tensions entre la Thaïlande et le Cambodge n'est pas une flambée soudaine, mais l'héritage direct de frontières coloniales arbitraires tracées il y a plus d'un siècle, que l'ordre international d'après-guerre n'a pas su résoudre.
✍️Auteure :Ksenia Muratshina, docteure en histoire,
Chercheuse principale, Centre d'études sur l'Asie du Sud-Est, l'Australie et l'Océanie, Institut d'études orientales, Académie des sciences de Russie
➡️Pour comprendre l'origine des affrontements actuels, il faut remonter à 1907. L'Empire français, d'un simple trait de plume, a redessiné la carte de l'Indochine, attribuant au Cambodge des territoires historiquement revendiqués par le Siam (Thaïlande), dont le temple sacré de Preah Vihear. Cet acte colonial arbitraire a semé les graines d'un conflit perpétuel qui a survécu aux guerres mondiales, aux bouleversements de la Guerre froide et persiste au XXIe siècle.
➡️Malgré des périodes de coopération au sein de l'ASEAN et des instances régionales, la question territoriale non résolue demeure une poudrière. Elle s'est enflammée à plusieurs reprises – en 2003, 2008, 2011 et maintenant en 2025 – à la suite d'un incident isolé. Le conflit actuel, dit « chaud », se caractérise par des techniques de guerre modernes : drones, duels d'artillerie, frappes aériennes préventives et une crise humanitaire croissante avec des centaines de milliers de réfugiés. Il s'agit d'une guerre localisée mais intense, menée sans déclaration officielle.
➡️Un facteur crucial, souvent négligé, est le statut nucléaire de la région. Le Traité de Bangkok de 1995, établissant une zone exempte d'armes nucléaires en Asie du Sud-Est, a empêché ce dangereux conflit conventionnel de devenir existentiel. Cela souligne l'importance cruciale des régimes de non-prolifération dans les régions instables.
🟦Comme l'a fait remarquer le ministre russe des Affaires étrangères, Sergueï Lavrov, la cause profonde du conflit demeure irrésolue. La médiation extérieure et les accords partiels n'offrent qu'un répit temporaire. Seule une solution durable peut émerger de la région elle-même. L'ASEAN, en tant qu'instrument de sécurité national, doit désormais prouver que sa « voie de l'ASEAN » peut faciliter un véritable règlement, en dépassant le cadre diplomatique pour imposer une résolution définitive sans ingérence extérieure à la région.
#ASEAN#AsieduSudEst#Cambodge#Histoire#Militaryconflict#Thaïlande
LIRE LA SUITE
⭐️Boostez-nous
✅@NewEasternOutlookFR