Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Ustad Saami — Pakistan Is for the Peaceful (Glitterbeat, 2020)
#surti#traditional#tambura#harmonium#tabla#Pakistan
Устад Саами — последний из ныне живущих певцов, способных исполнить древние 49-нотные микротональные гаммы традиции Сурти. Сурти сформировалась еще до каввали — традиции исполнения суфийской поэзии под музыку. В общем, исполнение песен в традиции Сурти считается спорным в исламском обществе, потому что она появилось еще до Мухаммеда. Даже под угрозой со стороны исламских фундаменталистов, мастер всю жизнь практиковал исчезающее искусство, которое передавалось из поколения в поколение с 13 века. Издание The Quietus отмечает, что «когда Устад Саами умрёт, эти 49 нот умирут вместе с ним». Pakistan Is for the Peaceful — его второй альбом, состоящий из трех композиций. Запись проходила в Карачи во время живого сета на крыше дома мастера под музыкальное сопровождение его четырёх сыновей. Продюссированием записи занимался Ян Бреннан, известный по работам с Tinariwen.
Spotify | AppleMusic | Bandcamp
Ustad Saami — A for Aleph Live (A for Aleph, 2024)
#surti#khyal#tambura#harmonium#tabla#Pakistan
Выступление прославленного певца Устада Саами и его сыновей на студии пакистанского лейбла звукозаписи A for Aleph. На записи можно услышать произведение Khayal (خیال), названное в честь одной из доминирующих форм музыки Северной Индии, и Kalam-e-Khusro, посвященное культовому суфийскому поэту Амир Хосрову. У него более семи веков назад обучался далекий предок Устада Саами, Миян Самат.
Семья Устада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Стиль Саами называется «Судх Бани» и, судя по всему, он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот.
🔗 YouTube | Spotify | AppleMusic | Bandcamp
Ustad Saami — East Pakistan Sky (Glitterbeat Records, 2021)
#surti#khyal#traditional#tambura#harmonium#tabla#Pakistan
Семья Устаада Насируддина Саами стояла у истоков школы каввали, основанной в XIII веке в Дели. Его предок Миян Самат обучался у самого Амира Хосрова, культового суфийского поэта, после чего традиция передавалась от отца к сыну в течение более чем 7 веков. Сам Саами начал свой творческий путь в середине 50-х годов под руководством своего дяди Устаада Мунши Разиуддина. В течении многих лет обучения ему было разрешено выражать свои мысли только посредством пения. Стиль Саами называется «Судх Бани» и судя по всему он является последним из ныне живущих вокалистов, практикующих микротональную систему шрути из 49 нот. East Pakistan Sky – его третий альбом, спродюссированный Яном Бреннаном, известным по работе с Tinariwen. Запись проходила в Карачи во время живого сета на крыше дома мастера под музыкальное сопровождение его четырёх сыновей.
Spotify | AppleMusic | Bandcamp | VK