Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🦉🚨Node Upgrade🚨🦉
Tearline AI app just rolled out a node upgrade! 🔥 This update will revamp power & compute calculations, ensuring a more equitable and transparent reward system.
Embrace fairer perks and a stronger #Tearline.
Plus, enjoy an easier-to-use sharing button in chat!
Details👉https://medium.com/@tearlineAI/tearline-node-upgrade-and-system-changes-3053e78abee1
🌐✨#Tearline just dropped on the 🔝 AI tool directories — Toolify.ai & TopAI.tools!
🔗 Toolify: toolify.ai/tool/tearline
🔗 TopAI: topai.tools/t/tearline
We’re blowing up in Web3 & tech.
What are you waiting for?
Start earning more today! 💸
Watch out, Tearline is leveling up - Your chat mate just got a turbo boost! 🦉💬
✅Chat history - securely stored
✅Full-context convo - like talking to real person
✅Multi-window chat - as smooth as cutting melting butt
✅Multi-language support, sure thing!
🇰🇷🇯🇵🇷🇺Korean, Japanese, Russian, Traditional Chinese speakers🤖️#Tearline now speaks the same language with you!
Let's rock those chats!
Play free, Earn your Power & Compute to secure airdrops! 🔐💫
Exciting news! 🦉#Tearline Bot will soon be seamlessly available on Telegram. 🚀
1. Access a real-time Web3 research engine instantly.
2. Get daily consulting to enhance your trading assistant.
3. Grab community points by joining now! http://t.me/tearlinexyz
Stay tuned for expanding service & ecosystem support📈✨
📢Tearline Points Program Update🚀
🔹 Phase 1 Points Snapshot Completed! 🎯 A snapshot of Phase 1 points will be taken on March 20 at 10:00 AM (UTC+8). These points have been securely recorded and will be a key reference for future TGE airdrops.
🔹 Phase 2 Starts NOW! 🌟 The next phase of the points program will officially begin on March 20 at 10:00 AM (UTC+8). You can now earn points across both the Mini App and the Web version. Log in with your Telegram account to seamlessly continue your journey.
Start earning today 👉https://www.tearline.io
📖 Learn more on Medium: https://medium.com/tearline/the-future-of-web3-interaction-tearlines-ai-and-multi-chain-strategy-aac34e5c856a
#Web3#Tearline#Airdrop#BNBChain