Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#ozbekiston_2030#strategiya
📢Takomillashtirilayotgan “Oʻzbekiston – 2030” strategiyasi jamoatchilik muhokamasiga qo‘yildi
🔷 Oʻzbekiston Respublikasi Prezidenti Shavkat Mirziyoyev tashabbusi bilan global jarayonlar va zamonaviy rivojlanish tendensiyalarini hisobga olgan holda “Oʻzbekiston – 2030” strategiyasining yangilangan loyihasi ishlab chiqildi.
🌍 Hozirda ushbu loyiha uzbekistan2030.uz onlayn platformasida jamoatchilik muhokamasi uchun e’lon qilingan. Har bir fuqaro loyiha bilan tanishib, “Fikr qoldirish” bo‘limi (💬 tugmachasi) orqali o‘z taklif va mulohazalarini bildirish imkoniyatiga ega.
💡Yangi g‘oyalar va konstruktiv takliflar bilan taraqqiyot sari birgalikda dadil qadam tashlaylik! Muhokamalarda faol ishtirok etishga chorlaymiz.
Telegram | Facebook | YouTube | Twitter | Website
Operatsionkadan chiqish
Ba'zi biznes egalarining operatsion jarayondan chiqa olmasliklarining asosiy sabablaridan biri — bu biznes egasining egosi.
Ya'ni, "men bu biznesda hammadan yaxshi bilaman, hammadan yaxshi sotaman va barcha savollarga hammadan to'g'ri yechim beraman" degan fikr.
Bunday yondashuv biznes egasi o'zini "superqahramon" va biznes to'liq o'ziga bog'liq ekanligini his qilib turishi uchun.
Xodimlarga ishoning — bu nafaqat sizni operatsion jarayonlardan ozod qiladi, balki jamoaning o'sishiga ham yordam beradi.
t.me/saidxasanjanov
#Boshqaruv#Strategiya
Prezident Shavkat Mirziyoyev “Yangi Oʻzbekiston yoshlari – 2030” strategiyasi loyihasi yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией проекта стратегии «Молодежь Нового Узбекистана – 2030».
#Mirziyoyev#taqdimot#yoshlar#strategiya
Prezident.uz|Facebook|Instagram|YouTube|X
Президент Шавкат Мирзиёев жорий йилда амалга ошириш мўлжалланган асосий стратегик ислоҳотлар бўйича тақдимот билан танишди.
—
Президент Шавкат Мирзиёев ознакомился с презентацией о ключевых стратегических реформах, планируемых к реализации в текущем году.
#Mirziyoyev#taqdimot#islohotlar#strategiya
Prezident.uz|Facebook|Instagram|YouTube|X
Prezident Shavkat Mirziyoyev “Yangi Oʻzbekiston yoshlari – 2030” strategiyasi loyihasi yuzasidan taqdimot bilan tanishdi.
—
Президент Шавкат Мирзиёев ознакомился с презентацией проекта стратегии «Молодежь Нового Узбекистана – 2030».
#Mirziyoyev#taqdimot#yoshlar#strategiya
Prezident.uz|Facebook|Instagram|YouTube|X
#Sarhisob
“Yangi O‘zbekiston” universitetida strategik rivojlantirish, innovatsiya va ilmiy tadqiqotlar bo‘yicha 2023-yil qanday yutuqlarga erishildi?
#strategiya#tadqiqotlar#innovatsiya
⬇️ Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook