Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌎 China’s Three Gorges Dam is the world’s largest hydroelectric power station. Completed in 2012, it spans the Yangtze River and displaced over 1.3 million people. The reservoir stretches about 600 kilometers, flooding numerous cities and archaeological sites. ✨
#engineering⚡#environment⚡#hydropower
👉subscribe Interesting Planet
🚀 Bhutan's Bitcoin Mining Activities May Have Slowed Amid Economic Pressures
Bhutan may have halted or reduced its Bitcoin mining operations after selling 70% of its Bitcoin holdings. According to Foresight News, this move contrasts with other major institutions and sovereign nations that are increasing their cryptocurrency and gold reserves. Bhutan's hydropower is reportedly being redirected to supply electricity to neighboring India rather than being used for Bitcoin mining. Economic pressures, along with declining Bitcoin prices, increased network difficulty, and halving pressures, are squeezing mining profitability. As of now, Druk Holding and Investments, the sovereign wealth fund managing Bhutan's Bitcoin assets, has not publicly commented on any asset transfers or the status of its mining operations.
#Bhutan#Bitcoin#Cryptocurrency#BitcoinMining#Hydropower#EconomicPressure#SovereignWealthFund#MiningProfitability#India#DigitalAssets
Roam Team Joins Coinbase, Shutting Down
Roam, a blockchain search engine, will shut down its products to join Coinbase. Key executives, including CEO, CTO, and CPO, are also moving to Coinbase to boost its on-chain consumer division. Read more
📊 Notable Transactions:
- 89,114,400 #XLM (valued at $38.6M) transferred between unknown wallets. Details
📈 Bithumb adds Korean Won trading pairs for DEEP token on Sui network. Details
🎮 Lotte Group gets largest grant from Arbitrum for its metaverse gaming platform Caliverse. Amount undisclosed. Read more
🌍 BIT Mining seals $14M deal with Ethiopia for a 51-MW facility and 18,000 mining machines, capitalizing on the country's low energy costs. Read more
#Blockchain#Coinbase#XLM#Crypto#DEEP#Sui#Arbitrum#Lotte#Metaverse#BITMining#Ethiopia#Bitcoin#DEX#CLOB#Gaming#Hydropower#Finance#News#Update#VC