Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Tashkent hosted the international forum Tashkent Water Week 2026 dedicated to water resource challenges.
Government officials, international organizations, and experts discussed water security and climate adaptation.
The focus was on water‑saving technologies, digital monitoring, and modern irrigation solutions.
Special report by Ekolog.uz
Author: Avazkhon Khaydarov
#TashkentWaterWeek#WaterSecurity#CentralAsia#ClimateChange#WaterManagement#EkologUz#EnvironmentalJournalism#Uzbekistan#WaterResources#Ecology
☘️Read the latest environmental news on the @ekologuz page. Follow us and send your suggestions and wishes via @eklguz_bot
Instagram | Facebook | Twitter | Sayt | Youtube.
😀🌊 Трансграничная река — региональные возможности: почему Иртыш важен
Иртыш — это больше, чем река. Это общий стратегический ресурс, объединяющий Китай, Казахстан и Россию в области водопользования, энергетики, сельского хозяйства и торговли.
🔹В Китае Иртыш обеспечивает развитие быстрорастущего региона Синьцзян, население которого с 1990 г. почти удвоилось.
🔹В Казахстане от Иртыша зависят 30% населения, орошается 45% сельскохозяйственных земель и вырабатывается 10% электроэнергии страны.
🔹Для России Иртыш является основным источником воды для города Омск.
Однако этот важный трансграничный ресурс сталкивается с серьезными вызовами. Увеличение водозабора в верховьях Иртыша в Китае и климатические изменения угрожают стабильности стока, качеству воды и выработке энергии в низовьях. Без своевременного реагирования эти факторы могут подорвать региональную безопасность, экономическую устойчивость и экологическое равновесие.
В видеоролике к этому посту Евгений Винокуров, заместитель председателя Правления и главный экономист ЕАБР, предлагает ряд решений, способных обеспечить устойчивое и взаимовыгодное использование водных ресурсов Иртыша в интересах всех стран бассейна.
🤝Сбалансированный и совместный подход позволит превратить Иртыш в двигатель устойчивого развития и региональной интеграции.
🔗 Подробнее — в новом отчете ЕАБР
#Irtysh#WaterSecurity#Kazakhstan#China#Russia
#TransboundaryWater#SustainableDevelopment
#RegionalCooperation
#Energy#Agriculture#TransportCorridor#CentralAsia
#Eurasia