Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Kickstart your career with the 𝐏𝐌 𝐈𝐧𝐭𝐞𝐫𝐧𝐬𝐡𝐢𝐩 𝐒𝐜𝐡𝐞𝐦𝐞 𝟐𝟎𝟐𝟒!
With 1.25 lakh internships across 24 sectors, gain real-world experience and connect with top companies.
Youth aged 21-24, earn ₹𝟓𝟎𝟎𝟎/𝐦𝐨𝐧𝐭𝐡 𝐩𝐥𝐮𝐬 𝐚 ₹𝟔𝟎𝟎𝟎 𝐨𝐧𝐞-𝐭𝐢𝐦𝐞 𝐠𝐫𝐚𝐧𝐭!
Register Now at
pminternship.mca.gov.in
#PMInternshipScheme
ये स्वर्णिम अवसर बिलकुल न चूकें—तारीखें नोट करें!
पंजीकरण: 12-25 अक्टूबर 2024
कंपनी का चयन: 27 अक्टूबर-7 नवंबर 2024
ऑफर लेटर: 8-15 नवंबर 2024
इंटरनशिप शुरू होने की तिथि: 2 दिसंबर 2024
#NewIndia#YuvaShakti
#PMInternshipScheme
योग्यता मानदंड:
- SSC, HSC, ITI, डिप्लोमा या बैचलर्स डिग्री होनी चाहिए।
- ऑनलाइन/डिस्टेंस प्रोग्राम कर रहे छात्र भी पात्र हैं।
- सुनिश्चित करें कि आप मानदंडों को पूरा करते हैं।
#NewIndia#YuvaShakti
#PMInternshipScheme
अपनी योग्यता देखें, और इस अवसर को बिलकुल भी न गवाएं!
- भारतीय नागरिक, उम्र 21-24 वर्ष
- किसी भी पूर्णकालिक नौकरी में न हों
#NewIndia#YuvaShakti
#PMInternshipScheme
आपके लिए इस अवसर में क्या-क्या शामिल है?
- 12 महीने की इंटरनशिप
- 5,000 रुपये/महीने का स्टाइपेंड
- 6,000 रुपये का एकमुश्त अनुदान
- न्यूनतम 6 महीने पूर्ण होने पर कार्य का प्रमाणपत्र
#NewIndia#YuvaShakti
#PMInternshipScheme
युवाओं के लिए एक शानदार मौका! 💥
#PMInternshipScheme में शामिल हों और अपने सपनों की कंपनी में काम करने का मौका पाएं, जहां आपका इंतजार कर रहे है 500 शीर्ष कंपनियों में 1.25 लाख इंटर्नशिप के सुनहरे अवसर।
आइए इस 🧵द्वारा जानें अधिक जानकारी...
#NewIndia#YuvaShakti
Delhi University Students Spill the Tea - What do they think about the #PMInternshipScheme?
In this #FridaysAtMyGov episode, we asked them for their thoughts, and trust us, their takes are both insightful and hilarious!
But that’s not all! Get ready for a fun Rapid Fire where students reveal what projects they'd work on... and what they'd ask if they met PM Modi!
🎥https://youtu.be/0eT-HBmYoi4?si=JO5IK849JPNKXYUH
#DelhiUniversity
#Internship2024