Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#timemanagement
#vaqtniboshqarish
VAQT ✍️
- Siz uxlayotganda vaqt o'tmoqda ...
- Siz o'ylanayotganingizda vaqt o'tmoqda ...
- Qanday pul topishni o'ylaguningizcha vaqt o'tmoqda ...
Oylar haftadek, haftalar kundek, kunlar soatdek, soatlar chaqmoqdek o'tib bormoqda. Siz anglamayabsiz biroq oltinga teng umr o'tib bormoqda. Tushuning do'stim g'animat vaqt ortga qaytmaydi. Tanasidan bir joni chiqsa sizni katta qilgan ona qaytmaydi. Siz rahmdildirsiz ammo vaqtni sizga rahmi kelmaydi.
🕒 VAQT bu asosiy boylik. Siz ikkilanib turgan vaqtda kimdir tavakkal qilib omadga erishmoqda.
🕐 Siz jur'atsiz yurganingizda kimdir jur'at qilib baxtga erishmoqda.
🕑 Hayotda kimgadur tobe bo'lsangiz begonaga omad, daromad keltirasiz.
🕓 Siz befoyda ishlar bilan bandligingizda kimdir foydali ish bilan o'sib bormoqda.
🕕 Sizni har kun ko'pchilik xafa qilishi mumkin, yuragingizga yaqin olmang. Ularni unuting. Aksincha ular sizni hayolingizni band qilib rejalaringizni buzmoqda.
Har kun har hil muammolar bo'lishi mumkin. Kuchli bo'ling.💪🏻 Katta orzular bilan yashang va orzularingizni ro'yobga chiqarish haqida o'ylang.
🕗 Hayotingizda yaxshi va yomon odamlar uchraydi, hammasi bilan aloqa qilishga tog'ri keladi. Sabr qiling vaqt o'zi ularni saralab beradi.
🕜 Inson umri juda qisqa, bu dunyoda qancha vaqtingiz bor bilmaysiz. Shuning uchun vaqtingizni keyin afsus qilmaslik uchun o'zingiz yoqtirgan mashg'ulotlarga sarflang.
🕝 Unutmang bugun tavakkal qilmasangiz ertaga kech bo'ladi.
🕟 Har kun yangi tong otadi bu degani yangi imkoniyatlar eshigini ochadi.
🕧 Vaqtni boy bermang, chigal masalalarni maslahatlashib ish ko'ring. Lekin o'z mustaqil fikringiz bo'lsin.
🕖Shuni unutmangki inson har ishni hayolda emas amalda qilsa hurmat topadi.
@Jizzax_volontyorlar_maktabi
🔄Share Your Schedule in 1 Tap
Today we have a small update: Main button of schedule sharing on «Calls» screen. You don’t need anymore make additional actions for great tool.
We’ve transferred «Group Calls» into profile section. We’ll bring something new over there a little bit later.
Have a warm holidays before our new updates. Stay tuned ✉️
App | #Callegram#Update#MiniApps#TimeManagement