Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
https://www.instagram.com/p/B39M7xjJLN9/?igshid=1uj5bbygq3f6b
Selamat kepada Letjen TNI (Purn) Dr. dr. Terawan Agus Putranto, Sp. Rad (K) RI yang telah dilantik oleh President @jokowi sebagai MENTERI KESEHATAN periode 2019-2024
.
.
Mari bersama wujudkan Indonesia yang lebih sehat.
Indonesia Sehat, SDM unggul
Masyarakat sehat, cerdas gunakan obat.
.
#menkes#menkesterawan#kabinetindonesiamaju#indonesiasehat#menteri#indonesiamaju#sdmunggul
#gemacermat
#cerdasgunakanobat
B2BASEAN приглашает дизайнеров и архитекторов к участию в 8-м Конгрессе Индонезийских Диаспор!
Уважаемые дизайнеры, модельеры, архитекторы и творческие лидеры!
B2BASEAN с гордостью объявляет о своем ключевом участии в 8-м Конгрессе Индонезийских Диаспор, который пройдет в сердце будущего – новой столице Индонезии Нусантара с 30 июля по 4 августа 2025 года.
Этот грандиозный форум, проходящий под эгидой "зеленой повестки", "мягкой силы" и "креативных индустрий", станет уникальной платформой для глобального диалога и демонстрации инноваций. В фокусе Конгресса – объединение культур, знаний и талантов со всего мира для построения устойчивого и вдохновляющего будущего.
Международный Показ "Дизайн без Границ": Мы ищем дизайнеров одежды и модельеров со всего мира
Deadline подачи заявки 15 июля
technosuveren.ru/mezhdunaro...
#B2BASEAN#KongresDiaspora8#Nusantara2025#GreenDesign#SoftPower#CreativeIndonesia#FashionForFuture#SustainableArchitecture#GlobalDesign#IndonesiaMaju
*[WEBINAR]*
Menjelang akhir tahun 2020 ini COVID-19 masih membelenggu kita semua, diperlukan persatuan yang kuat untuk bangkit bersama dari COVID-19. Dalam rangka mengisi kegiatan Road to SDGs Annual Conference 2020, Duta SDGs Indonesia - Alissa Wahid menyelenggarakan webinar dengan tema:
*"Solidaritas dan Kerukunan Antarumat sebagai Perwujudan SDG16 Indonesia untuk Bangkit dari COVID-19"*
Keynote Speaker:
*Dr. (H.C.) Ir. H. Suharso Manoarfa, Menteri PPN/Kepala Bappenas*
_Refleksi Solidaritas dan Kerukunan Antarumat di Indonesia oleh_ *Prof. Dr. Azyumardi Azra, MA, CBE*
Narasumber:
✔️Alissa Wahid, Duta SDGs Indonesia
✔️Dio Ashar Wicaksana, Direktur eksekutif IJRS
✔️Desiana Samosir, Executive Board Temu Kebangsaan Orang Muda & Sekretaris JIC
✔️Lian Gogali, Insitute Mosintuwu, Poso
Penutup: Dr. Diani Sadiawati, SH., LL.M.
Webinar ini diselenggarakan pada:
📅 Hari/Tanggal: Kamis, 26 November 2020
🕑 Waktu: 13.30 WIB s/d Selesai
💻 Platform: zoom.us
Registrasi Online Melalui:
https://s.id/webinar-sdg16
Webinar ini GRATIS dan tidak dipungut biaya serta
*Dapatkan Free Sertifikat* bagi para peserta yang mengikuti Syarat dan Ketentuan.
Tunggu apalagi? yuk daftar sekarang dan ikuti webinarnya!
#SDGsIndonesia2020#BangkitdariCOVID19#SEKNASSDGsIndonesia#BAPPENAS#Indonesiamaju#Indonesia#TPB/SDGs #Pembangunan#PembangunanBerkelanjutan#SustainableDevelopment