Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🎞 YOUTUBE KANAL OCHISH XIZMATI #PREMIUM
🇺🇿🇺🇸O'zbekcha va Amerikan kanal ochib beramiz!
✅ Kanal uchun yo'nalish tanlashda yordam beramiz
✅ Kanal uchun original nom o'ylab topamiz
✅ Kanal ochamiz va to‘liq sozlab chiqamiz
✅ Standart Banner va Avatarka ishlab beramiz
✅ Telefon raqam bilan tasdiqlab beramiz
🧑💻 1 OYLIK NAZORAT: 30 kun davomidaadmin — kanalingizni kuzatib, nazorat qiladi va savollaringizga javob beradi!
🎁 BONUS: “VIGETA PRIVATE” yopiq kanalimizga 1 oylik tekin a’zolik🎁
💰 Narx: 349 000 so‘m
⏰ Topshirish muddati: 2 kun
🛒Buyurtma berish:
✍️@Vigeta_Admin
✅ 300 dan ortiq kanallarni muvaffaqiyatga boshladik — navbat sizniki!
➖➖➖➖➖➖➖
😎VIGETA | BLOGERLAR UCHUN
#Premium💸
The world of crypto and particularly futures trading is a beautiful world. 💎
Detailing a profitable trade requires a great team. We provide all this for you with pay a small fee in a VIP channel.
Join us👉@shadow_crypto_bot
#Premium🔥🔥
The world of crypto and particularly futures trading is a beautiful world. 💎
Detailing a profitable trade requires a great team. We provide all this for you with pay a small fee in a VIP channel.
Join us👉@shadow_crypto_bot
#Premium🔥🔥
The world of crypto and particularly futures trading is a beautiful world. 💎
Detailing a profitable trade requires a great team. We provide all this for you with pay a small fee in a VIP channel.
Join us👉@shadow_crypto_bot
#Premium🔥
The world of crypto and particularly futures trading is a beautiful world. 💎
Detailing a profitable trade requires a great team. We provide all this for you with pay a small fee in a VIP channel.
Join us👉@shadow_crypto_bot
#Premium💰
STOP losing money trading alone
STOP telling yourself every time that you will make it back, but every time you lose it all.
STOP letting opportunities pass you by.
💯One of our signals is always more than 100%, which means x2 to the deposit.
💎join us to enjoy our signals💎
#Premium
The world of crypto and particularly futures trading is a beautiful world. 💎
Every day, absolutely every day, there are huge opportunities to make money.💸
Join our community now to take advantage of our exceptional signals and to finally be able to make a lot of money with crypto. 🤑
🌟join us to enjoy our signals🌟
Bot Dukungan Resmi Smart Glocal
Beberapa waktu lalu, pengguna menemukan bot @tgpb_support_bot, yang memiliki tanda centang verifikasi resmi dan dirancang untuk menangani pertanyaan terkait pembayaran langganan Telegram Premium yang dilakukan melalui @premiumbot.
Bot ini dapat berguna bagi pengguna yang telah membayar langganan melalui @premiumbot tetapi belum melihatnya muncul di akun mereka.
#premium