Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🔒Are you worried about the safety of your digital assets?
That should be the least of your worries with Go! smartchain onboard
Dig deeper here 👇
https://gosmartchain.ai
Tokenization on Go! SmartChain AI. offers enhanced security features to keep your investments safe
In addition to that, your transactions is made permanent and transparent
And your digital assets safe from the risk of fraudulent activities
#Tokenization#BlockchainSecurity#GoSmartChain#DigitalAssets
-----------------
Join: 🐣X✉️Chat✉️News🤖Discord
Play: 🕹️TON App💻Web App
Info: 🖥Newsletter🌐Website🌐Blog
🌟 Revolutionize with RealFi by Go! SmartChain AI! 🌟
Here's a sneak peak into how Realfi is transforming communities with Go!👇
🔗https://goplatform.io/blog/introducing-realfi-transforming-communities-with-decentralized-ai
RealFi represents a significant leap in integrating AI, blockchain, and community-driven initiatives
With the ability to tokenize anything in seconds, RealFi makes the process simple, fun, and rewarding for you to participate and benefit.
Join Go! on this transformative journey.
#Realfi#Gosmartchain#AI#blockchain#tokenize
-------------------------
Join: 🐣X✉️Chat✉️News🤖Discord
Play: 🕹️TON App💻Web App
Info: 🖥Newsletter🌐Website🌐Blog
Every transaction tells a story.
Validated. Broadcast. Secured on Go! SmartChain.
This is how real-world value becomes digital — fast, transparent, and verified.
💡 Try it yourself: https://app.gosmartchain.ai
#GSMC#GoSmartChain#RWA#RealFi#Blockchain
🚀 Time to Check In, Go! SmartChain AI Community!
Check in now if you're yet to👇
🔗https://t.me/thegoprojectbot?start=twitter
Here's an another opportunity to increase your daily dose of engagement and rewards! 🎮💰
And once you're in
1. Click "Open App" to get started
2. Tap the Go! token to collect rewards
3. Complete your daily tasks and quests to earn GoXP
Most importantly,
Stay active and climb your way to the top. Your participation paves the way for you 💪
#CheckIn#EarnRewards#GoSmartChain#GoTonapp
-----------------
Join: 🐣X✉️Chat✉️News🤖Discord
Play: 🕹️TON App💻Web App
Info: 🖥Newsletter🌐Website🌐Blog
Owning real assets just got easier.
Buy, trade, and track tokenized assets directly with $GSMC in one seamless experience.
Real value. Real ownership. RealFi in motion.
🌐https://app.gosmartchain.ai
#GSMC#GoSmartChain#RWA#Tokenization#RealFi
🚀 Ready to build & secure the future of decentralized finance? Dive into a day in the life of a developer & validator on the Lysa Testnet! Learn how to create dApps, validate blocks, and earn rewards on Go! SmartChain AI. Explore more👇
👉https://tally.so/r/wQYoxl
#Blockchain#DeFi#RealFi#LysaTestnet#GoSmartChain#developers#validators#BlockchainGaming
-----------------
Join: 🐣X✉️Chat✉️News🤖Discord
Play: 🕹️TON App💻Web App
Info: 🖥Newsletter🌐Website🌐Blog