Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Odamlarning maxfiylik huquqi haqida keyinroq va batafsilroq to’xtalaman, lekin yaqinda chiqqan ikkita videoni bo’lishmoqchiman quyida.
Birinchisi DuckDuckGo qidiruv tizimidan (asosiy qidiruv sifatida ishlatayotganimga ancha bo’ldi) va The Police guruhining "Every Breath You Take" ("Olayotgan har bir nafasing") qo’shig’iga moslab ishlangan:
https://twitter.com/DuckDuckGo/status/1526555252236988419
Ikkinchisi Apple’dan "Data Auction" ("Ma’lumotlar auksioni") deb nomlanadi va reklama asosida pul topadigan kompaniyalar sizning (bizning) ma’lumotlarimizni sotishi haqida:
https://youtu.be/NOXK4EVFmJY
Ma’lumotlarimizni asraylik 😇
@FarLives#maxfiylik#apple#duckduckgo#google#facebook
📎OIV bilan yashovchilarning ma’lumotlari qanday himoyalanadi?
Ijtimoiy tarmoqlarda ko‘plab odamlar OIV-status oshkor bo‘lib qolishidan qo‘rqib, tahlil topshirishdan tiyilishayotgani aytilmoqda. Amaldagi qonunchilik esa diagnoz, murojaat va davolanish haqidagi barcha ma’lumotlar tibbiy sir ekanini va bemor roziligisiz oshkor etilishi qat’iyan taqiqlanishini belgilaydi.
‼️ OIV haqidagi ma’lumotlar maxsus himoyaga ega: ularni qarindoshlar, ish beruvchi yoki uchinchi shaxslarga berish taqiqlanadi. Sizib chiqish — ma’muriy yoki jinoyaviy javobgarlikka sabab bo‘ladi. Shuningdek, OIV bilan yashovchilar kamsitilmaslik, bepul davolanish va ijtimoiy kafolatlarga ega.
✅Batafsil: factchecknet.uz
🟢
🟢
🟢
🟢
🟢
📎 Как в Узбекистане защищаются данные людей, живущих с ВИЧ?
В соцсетях обсуждают страх утечки диагноза, из-за которого многие избегают тестирования. Закон прямо устанавливает: сведения о диагнозе, обращении за медпомощью и лечении являются врачебной тайной и не могут быть раскрыты без согласия человека.
‼️Информация о ВИЧ-статусе относится к особо охраняемым данным. Передавать её родственникам, работодателю или третьим лицам запрещено. Утечка карается административной или уголовной ответственностью. Людям, живущим с ВИЧ, гарантированы социальные права и защита от дискриминации.
✅ Подробности: factchecknet.uz
Haqiqat himoyasida! / На страже правды!
Facebook | Instagram | Telegram | YouTube
#ZoravonlikkaQarshi16Kun#ВИЧ#Конфиденциальность#Права#Закон#OIV#Maxfiylik#Huquqlar