Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
👥Адамдар немесе топтар арасындағы жанжалға не әсер етеді және оны қалай шешуге болады?
👤Осы туралы 1950 жылдары америкалық психолог Музафер Шериф Оклахома штатындағы балалар лагерінде зерттеу жүргізді. Әлеуметтік психологияда бұл тәжірибе The Robbers cave (Қарақшылар үңгірі) деген атаумен танымал.
🔍Толығырақ карусельден оқыңыз
___
👥Что приводит к межгрупповому конфликту и как можно его разрешить?
👤В 1950-х годах американский психолог Музафер Шериф провел исследование в детском лагере в Оклахоме. В социальной психологии исследование известно как Robbers cave experiment (Пещера разбойников).
🔍Подробнее об эксперименте можно узнать в карусели.
#ҚҚДИ#KIPD
#SocialPsychology#ConflictResolution#RobbersCaveExperiment
🚀 Ukraine's Negotiator Optimistic About Peace Deal with Russia
Ukraine's chief negotiator with Russia has expressed optimism about reaching a peace agreement with Russian President Vladimir Putin in the near future. Bloomberg posted on X, highlighting the negotiator's belief that a resolution to the ongoing conflict could be achieved soon. This development comes amid ongoing tensions and efforts to find a diplomatic solution to the hostilities between the two nations. The negotiator's comments suggest a potential breakthrough in the peace talks, which have been a focal point for international observers. The situation remains fluid, with both sides continuing to engage in discussions aimed at ending the conflict.
#Ukraine#Russia#PeaceTalks#Diplomacy#ConflictResolution#InternationalRelations
🚀 Polymarket Odds Drop as Iran-Israel/US Conflict Talks Stall
Polymarket odds for the Iran-Israel/US conflict ending before April 15 have decreased to 47%, marking a 22% drop within 24 hours. According to NS3.AI, the odds for the conflict concluding before April 30 have also fallen to 55%, down 16%. This decline follows the latest round of US-Iran talks, which ended without reaching an agreement.
#Polymarket#IranIsraelConflict#USTalks#IranUSRelations#OddsDrop#ConflictResolution#April15#April30
🚀 Iran's Leadership Revamp Amid Peace Talks with the US
The ongoing conflict in Iran has prompted significant changes in the nation's leadership structure. Bloomberg posted on X that the Revolutionary Guards are set to play a pivotal role in the upcoming peace negotiations with the United States this weekend. This shift in power dynamics underscores the growing influence of the Revolutionary Guards in Iran's political landscape. The talks are expected to address key issues surrounding the conflict and aim to establish a framework for peace. Observers are closely watching how the involvement of the Revolutionary Guards will impact the discussions and the potential outcomes of these negotiations.
#Iran#LeadershipRevamp#PeaceTalks#RevolutionaryGuards#USIranRelations#PoliticalLandscape#ConflictResolution#IranPolitics#PeaceNegotiations
🚀 Russia and Ukraine Conduct Prisoner Swap Mediated by UAE
Russia and Ukraine have successfully exchanged 175 prisoners of war, with the United Arab Emirates playing a mediating role in the process. Bloomberg posted on X, highlighting the significance of this exchange amid ongoing tensions between the two nations. The swap marks a notable development in the efforts to address humanitarian concerns arising from the conflict. Both countries have been engaged in a prolonged conflict, and such exchanges are seen as steps towards easing tensions and addressing the humanitarian impact of the war. The involvement of the UAE underscores the international community's interest in facilitating dialogue and resolution between Russia and Ukraine. This exchange is part of ongoing efforts to manage the humanitarian aspects of the conflict, which has drawn widespread international attention.
#Russia#Ukraine#PrisonerSwap#UAE#HumanitarianEfforts#ConflictResolution#InternationalDiplomacy#HumanitarianImpact#Tensions#War