Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌍 About 10% of global greenhouse gas emissions now come from food waste alone. If food waste were a country, it would be the third biggest emitter after China and the United States. ✨
#climate⚡#environment⚡#emissions⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Nearly a third of global food is lost or wasted each year, not reaching our plates. This wasted food generates massive greenhouse gas emissions, which contribute to climate change. ✨
#food⚡#waste⚡#emissions⚡#climate⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🚢UK shipping: расширение UK ETS на внутренние рейсы грозит ростом издержек.
Отраслевые объединения Великобритании усилили критику планов правительства распространить UK Emissions Trading Scheme (UK ETS) на внутренние морские перевозки с 1 июля 2026 года.
По их оценке, мера может повысить издержки, ударить по островным маршрутам и снизить конкурентоспособность без заметного сокращения выбросов.
Суда ≥5 000 GT, выполняющие рейсы между портами Великобритании, должны будут мониторить и сдавать квоты на 100% выбросов CO₂, CH₄ и N₂O, включая портовые операции; офшорный флот - с 2027 года.
Штраф за недосдачу - £100/т CO₂e (с индексацией) плюс обязательство закрыть дефицит. Первый отчётный период: 1 июля–31 декабря 2026 г.; предусмотрена разовая «двойная сдача» квот до 30 апреля 2028 г.
UK Chamber of Shipping поддерживает климатические цели, но указывает на сжатые сроки внедрения и дефицит инфраструктуры (системы берегового питания, пропускная способность сетей).
Альтернативные типы топлива, по данным отрасли, дороже традиционных в 4–5 раз. Бизнес настаивает на реинвестировании поступлений ETS в декарбонизацию, согласовании с EU ETS для предотвращения двойного начисления и поэтапном «monitor-only» периоде.
📌UK Chamber of Shipping основана в 1877 году и представляет интересы судоходной отрасли Великобритании. Организация является некоммерческой и управляется компаниями-членами.
#UKETS#decarbonisation#shippingpolicy#maritime#emissions
Ethereum: Potential Shift to Trustworthy Money
Ethereum could become ‘ultra-secure’ money as supply decreases, claims developer Justin Drake. Post-Dencun, emissions stats: 657,000 BTC vs. 469,000 ETH ($63.4B vs. $1.23B). Bitcoin miners rely on crypto mining; commission share at only 1%. Safety concerns may arise as mining becomes less viable. Halvings could worsen security issues.
Read more: ForkLog
#Ethereum#Bitcoin#Crypto#Mining#Finance#Deflation#JustinDrake#Dencun#ETH#BTC#Blockchain#Investing#Decentralization#PoS#Halving#Security#MarketTrends#Emissions#DigitalAssets#RiskManagement#Cryptocurrency