Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🚀 Binance Alpha Opens Mystery Box Airdrop Featuring AOP, REKT, and CLO
Key TakeawaysBinance launches Alpha Mystery Box airdrop.Reward pool includes AOP, REKT, and CLO tokens.Users need ≥240 Alpha points to claim; costs 15 points per claim.Rewards vary by tier and are distributed first-come, first-served.Binance Alpha Mystery Box Airdrop Goes LiveBinance Wallet has opened its Alpha Mystery Box airdrop, with rewards drawn from three projects:Ark of Panda (AOP)Rekt (REKT)Yei Finance (CLO)Eligible users can claim the airdrop via the Alpha event page.Eligibility and Claim RequirementsTo participate:Users must hold at least 240 Alpha pointsEach claim consumes 15 Alpha pointsEach user can claim onceRewards must be confirmed within 24 hours, or eligibility will be forfeited.Reward Structure and DistributionParticipants are randomly assigned to different reward tiers, receiving one of the following:AOP: 715 / 860 / 2860 tokensREKT: 192,307,700 / 230,769,230 / 769,230,770 tokensCLO: 335 / 400 / 1335 tokensAll rewards are distributed on a first-come, first-served basis.
#Binance#AlphaMysteryBox#Airdrop#AOP#REKT#CLO#AlphaPoints#Crypto#Rewards#YeiFinance#ArkOfPanda#CryptoAirdrop#BinanceWallet
📍 List of abbreviations commonly used in cryptocurrency trading:
#ALTCOIN = Alternate cryptocurrency except bitcoin
#SHITCOIN = A coin with no potential value or use
#BEAR | #BEARISH = Negative price movement
#BULL | #BULLISH = Positive price movement
#LONG = Margin buy position
#SHORT = Margin sell position
#BTFD = Buy The Fucking Dip
#DILDO = Long green or red candles 😆
#DYOR = Do Your Own Research
#FA = Fundamental Analysis
#TA = Technical Analysis
#FOMO = Fear Of Missing Out
#JOMO = Joy Of Missing Out
#FUD = Fear Uncertainty & Doubt
#HODL = Hold a position
#MCAP = Market Capitalization
#MOON = Continuous upward movement of price
#OTC = Over The Counter
#PUMP = Upward price movement
#DUMP = To sell off a coin
#REKT = When you have a bad loss
#WHALE = Very wealthy trader/Market mover
#AMA = Ask me anything
#ATH = All Time High
#ATL = All Time Low
#DLT = Distributed ledger technology
#IMO = In My Opinion
#LAMBO = Lambo is symbol that becomes an elusive goal for most investors
#NOOB = A person who is inexperienced
#SAFU = Secure Asset Funds for Users
#SHILL = Holder of altcoin who just wants to promote it for his own benefit
✅@ElfCryptoVIP