Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
📜Status Report 3: Getting ready for the Beta
⚙️iOS
Migration to mainnet
Finalised UI/UX
Finished balancing the game for beta test
Added hints and tips, also updated tutorial
⚙️Android
Added CAThlete selection screen
Stay tuned!
P.S. Beta is launching on March 14. You still can sign up for the testers whitelist on https://walken.io🚀
#walken#blockchaingame#NFTs
📢📢📢GIVEAWAY
We’re excited to announce our very first giveaway! We’re giving 1 MILLION $WLKN to our community!🦁
There will be 250 lucky Winners🪙
The more entries you make, the higher your chances are to become one of the winners and get your share of tokens 🎁
🍀 Follow the link and enter today:
https://gleam.io/v3Da1/walken-giveaway
#nft#walken#blockchaingame#giveaway
Hi there! 😃
We’ve been wondering how keen you are on walking 👟- maybe you have a job that keeps you on your feet, or walking happened to be your favourite pastime?
🐾 In Walken, the more you walk, the higher 📈 your step count is - the more in-game Gems 💎you’ll get!
Given that 1ksteps = 1 gem , how many Gems 💎 would you get per day (on average) today?
A quick reminder: the app is not available yet, and we’re doing our best to bring it live as soon as possible! Initial DEX offering (IDO) is coming late Feb, will do our best to start a beta before that. There will be both iOS and Android version, so no worries!
*
We’ll be keeping you updated here and on Twitter, so stay tuned 📻 and we’ll let you know when you’ll be able to join the beta test and get your CAThlete!
🐦 twitter: https://twitter.com/walken_io
🧨 medium: https://medium.com/@walken.io
🕹️ discord: https://discord.gg/QJDnFt6S4J
#nft#walken#walkandearn#NFTGaming#blockchaingame
Welcome to our news channel! 👋
WALKEN is a new NFT game that converts your steps 🚶in real life into tokens 🎮. Comming really soon! ⚡
Join to stay up to date about release news, promo drops and development updates 🐨
🐦 twitter: https://twitter.com/walken_io
🧨 medium https://medium.com/@walken.io
🕹️ discord https://discord.gg/S2GvpU24
#nft#walken#walkandearn#NFTGaming#blockchaingame
📢 BETA TEST is coming soon!
We know you're itching to have a go and acquire your first CAThlete 🐷 Great news: gameplay development is progressing, and we're preparing a 💥playable beta💥!
We are grateful for your patience and will announce the start of beta testing in advance⏰ Stay tuned and don't miss out on the fun!
🐦 twitter: https://twitter.com/walken_io
🧨 medium https://medium.com/@walken.io
🕹️ discord https://discord.gg/QJDnFt6S4J
#nft#walken#walkandearn#NFTGaming#blockchaingame#betatest#betatester