Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🔺Dasturchilar uchun eng yaxshi kod tahrirlash dasturi:
1. VSCode - https://www.code.visualstudio.com
2. Sublime Text - https://www.sublimetext.com/
3. Atom - https://atom.io/
3. WebStorm - https://www.jetbrains.com/webstorm/
Oramizda dasturchilar bormi?
🌐Birinchi raqamli Windows Blog |#dasturchilar / #sayt
⚡️Dasturchilar uchun eng yaxshi kod tahrirlash dasturi:
1. VSCode - https://www.code.visualstudio.com
2. Sublime Text - https://www.sublimetext.com/
3. Atom - https://atom.io/
3. WebStorm - https://www.jetbrains.com/webstorm/
P.s: Oramizda dasturchilar bormi?
👉🏼Birinchi raqamli Dasturlash Blog | #dasturchilar / #sayt
Dasturchi tanishlarim dizaynni o'rganishni boshlashibdi ekan, bir tomondan AI, bir tomondan dasturchilar o'ylantiradi endi)
Biz ham AI zamonida dasturlashni o'rganishni boshlashimiz lozim. Bora bora bozorda bir necha vositalar bilan raqobat qilish, bir qanot bilan uchayotgan qushdek bo'lib qoladi. Ya'niki yaralangan qush hamon uchmoqda. Bunday qushlarni kesak bilan urib tushurish hech gap emas! :))
@suxrobblog
» #AI#dizayner#dasturchilar🪓
147 Colors — bu CSS-da mavjud bo'lgan ranglarni nomi bo'yicha ko'rish va tanlash uchun vosita.
Xususiyatlari:
💧 Ranglar katalogi - nomlari bilan 17 ta asosiy va 130 ta qoʻshimcha rangni oʻz ichiga oladi.
❄️ Filtrlash – kerakli rang yoki ranglar guruhi boʻyicha oson qidirish.
🌀 Rang g'ildiragi — qulaylik uchun ranglarning interaktiv tanlovi.
🎮 CSS kodini yaratish — dasturchilar uchun ranglarni loyihalarga nusxalash imkoniyati mavjud.
@suxrobblog — #foydali#ranglar#dasturchilar
#vscode#prettier#dasturchilar#vscodetutorial
Tartibsiz kod – bu tartibsiz fikr.
Shuning uchun har doim Prettier bilan kodingizni tozalang
VS Code’da buni qanday qilish videoda ko'rsatilgan.
💻@dasturlash_hayoti— Dasturchilar hayoti, motivatsiya va IT olamidagi eng foydali maslahatlar shu yerda!
🎨Dizaynerlar va Dasturchilar uchun ajoyib manba!
Agar zamonaviy UI komponentlari kerak bo‘lsa yoki ilhom izlayotgan bo‘lsangiz,Uiverse.io sizga yordam beradi!
✅ Interaktiv tugmalar, shakllar, kartalar va animatsiyalar
✅Bepul va ochiq manba
✅Kodlarni nusxalab olib, loyihangizda ishlatish imkoniyati
Frontend dasturchilar uchun katta imkoniyat! 💻 Saytni sinab ko‘ring va o‘z loyihalaringizni yanada chiroyli qiling! 🔥
📌 Link:https://uiverse.io
#Dizayn#UI#Frontend#Dasturchilar#Ilhom
💻@dasturlash_hayoti — bir xatoni tuzatib, ikkinchisiga tayyorlanish! 😅