Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Whale Moves ETH, Mt. Gox Transfers BTC
A major whale sold 25,800 ETH to avert liquidation, incurring a $31.75 million loss after purchasing at an average price of $3,084 in July 2024. Meanwhile, Mt. Gox transferred 11,501 BTC (approx. $905 million) to a new address and 332 BTC (approx. $26.13 million) to its warm wallet. New markets for minting crvUSD with weETH, cbBTC, and LBTC as collateral launched.
#ETH#BTC#MtGox#DeFi#Crypto#Whale#Liquidation#trading#MarketNews#CurveFinance#blockchain#finance#investment#cryptocurrency#ethusd#bitcoinnews#assets#collateral#cryptoexchange#trends
«Я никогда не переживал, достанется ли мне золотая статуэтка, просто получал удовольствие от церемонии и предвкушал вечеринку, которая должна была за ней последовать».
Единственному и неповторимому Тому Крузу сегодня исполнилось 63 года.
#ВИДЕОТЕКА
#TomCruise
#ТомКруз
#RiskyBusiness
#TopGun
#RainMan
#TheFirm
#JerryMaguire
#MissionImpossibleII
#TheLastSamurai
#Collateral
#JackReacher
#EdgeOfTomorrow
#MissionImpossibleTheFinalReckoning
DeFi Tuna Exposes Fund Manipulation Scheme
Moty, founder of DeFi Tuna, accuses Kelsier of orchestrating a scheme to siphon significant funds from M3M3. Meteora leaders, including Ben, allegedly facilitated numerous KOLs, allowing them to purchase tokens early before the official launch. This led to massive profits for these investors. 📈Read more here.
#DeFi#Crypto#VC#M3M3#marketmanipulation#KOLs#funds#memecoin#profit#Moty#Kelsier#Meteora#Ben#Hayden#launchpad#staking#Bitcoin#yield#institutional#collateral#Maple
«Когда мы снимали сцену в кафе в фильме «Схватка», мы практически не проводили репетиций. Специально. Обсудили только общие моменты и хронометраж. Просто прошлись по тексту, потому что работу актеров я хотел увидеть только при съемке. А снимал я сразу на несколько камер, потому что понимал, что с такими актерами, как Аль и Боб, важна каждая деталь. Если Аль делает движение рукой, то Боб автоматически реагирует и меняет позу. Это органичное взаимодействие невозможно предугадать. В каждом дубле появляется что-то новое. Вот почему я всегда делаю ставку на спонтанность. Кстати, вся эта сцена в «Схватке» в итоге снята одним дублем. Но, в конечном счете, фильм получается таким, как я хочу».
🎬📷Сегодня исполнилось 83 года великому режиссёру, продюсеру и сценаристу Майклу Манну.
#ВИДЕОТЕКА
#MichaelMann
#МайклМанн
#Thief
#Вор
#TheLastOfMohicans
#ПоследнийИзМогикан
#Heat
#Схватка
#Ali
#Али
#Collateral
#Соучастник
#MiamiVice
#ПолицияМайамиОтделНравов
#PublicEnemies
#Blackhat
#Ferrari
#Феррари
#BehindTheScenes