Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
💻 We just wrapped up an incredible event, “How to Become an MLSA” and it was a huge success! A big thank you to everyone who joined us. 🚀
Our MLSA, Dilafruz Joraboyeva, shared her inspiring journey and valuable insights on becoming a successful Microsoft Ambassador. We were also honored to have Mukhammadkarim Tukhtaboyev, lead of the Microsoft Developers Community Uzbekistan, share important information about our vibrant community and opportunities for growth.⚡
Check out the highlights in our amazing video recap! Together, we’re building a stronger tech community. Stay tuned for more events! 🙃
#MLSA#StudentAmbassador#Event
@mdcuzbekistan
💻 Join Us for "Way to Become an MLSA"!
Are you interested in becoming a Microsoft Learn Student Ambassador? Curious about how to kickstart your journey in tech?
Join us for an inspiring event featuring Uzbekistan’s youngest and first female Microsoft Student Ambassador. She will share her unique experiences and insights into the MLSA program.⚡
📍Date & Time: November 2, 2:00 pm
⏰Location: C-Space, Yunusabad Branch
This is your opportunity to ask questions, network with peers, and learn how you can become a part of this exciting community. Don’t miss out—mark your calendars!🙃
Register here! Spots are limited.
#Microsoft#MLSA#StudentAmbassadors#Leadership#MicrosoftDevelopersUzbekistan
@mdcuzbekistan
Our Core Team Member, Dilafruz Joraboyeva, Achieved Microsoft Learn Student Ambassador Status!
We are thrilled to share that our very own core team member, Dilafruz Joraboyeva, has achieved a remarkable milestone by becoming the first and youngest female Microsoft Learn Student Ambassador (MLSA) in Uzbekistan. Dilafruz, who has long been an active and dedicated part of our community, now stands as the only MLSA in the country.
In her new role, Dilafruz will be leading the MLSA program across universities in Uzbekistan, bringing Microsoft technologies and opportunities closer to students. Her efforts will help build a vibrant community of learners and innovators, inspiring others to take on leadership roles in tech.
Keep an eye on our official platforms for upcoming events related to the MLSA program, where you can discover how to join this exciting initiative and make an impact at your university.
#Microsoft#MLSA#StudentAmbassadors#UzbekistanTech#MicrosoftDevelopersUzbekistan#Leadership#Innovation
@mdcuzbekistan