Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Ravi Shankar — The Sounds of India (Columbia Records, 1968)
#hindustani#raga#sitar#India
Культовый альбом Рави Шанкара, который представляет классическую музыку Северной Индии западному слушателю. В начале альбома Рави Шанкар дает определение раге на английском языке, а затем исполняет ряд композиций, сопровождая их пояснениями о том, как они устроены. Вопреки этому, музыка исполнена очень аутентично. Альбом был вдохновлен работами Али Акбара Кхана, известного исполнителя на сароде и преподавателя классической музыки Северной Индии, и спродюсирован Джорджем Авакяном, одним из продюссеров Майлза Дейвиса.
Spotify | AppleMusic
Banaras Baba & Kolkata Kid — From North to South (Epidemic Sound, 2021)
#hindustani#raga#sitar#India#Sweden
После многих лет изучения музыки Индостана, два шведских музыканта, мульти-инструменталист К.Г. Уэстман, он же Banaras Baba, и перкуссионист Хьюго Виден, он же Kolkata Kid, выпустили серию мини-альбомов, посвященных индийской классической музыке. Перед нами второй альбом из этой серии. Несмотря на то, что у музыкантов не было задачи смешивать разные музыкальные традиции, в их работах присутствуют западные инструменты и очень слышно влияние западной музыки.
Spotify | AppleMusic
Shujaat Khan & Katayoun Goudarzi — This Pale (Black Groove Music, 2021)
#hindustani#persian_classical#sitar#ney#tabla#Iran#India
Совместная работа ситариста Шуджаата Хусейна Хана и иранской вокалистки Катаюн Гударзи. За свою долгую карьеру Шуджаат выпустил более 60 альбомов. Одним из самых ярких моментов его карьеры стал альбом The Rain, записанный с индо-персидским ансамблем Ghazal. Пластинка была номинирован на премию Грэмми в 2004 году. На новой работе This Pale звуки ситара Хусейна Кхана, вокал Гударзи, най Шахо Андалиби и табла Шарика Мустафы вдохнули новую жизнь в шесть стихотворений Руми, персидского поэт-суфия XIII века.
Spotify | AppleMusic
Various Artists — Folk Music of Pakistan (Folkways Records, 1951)
#traditional#alghoza#bansuri#bagpipe#clarinet#dholak#dilo#duff#ghatam#mandolin#sarinda#sitar#tabla#tambura#Bangladesh#Pakistan
Пакистан образовался в 1947 году после разделения Британской Индии на два государстваː индуистское, Индийский Союз, и мусульманское, Доминион Пакистан. Бангладеш, ранее известный как Восточный Пакситан, приобрёл автономность в 1971 году в результате войны за независимость.
Композиции из разных регионов обеих современных стран представлены на этой записи 1951 года. Например, на ней можно услышать песню бангладешских лодочников «бхатиали» (ভাটিয়ালি) или пуштунскую любовную песню из Хайбер-Пахтунхва.
Важно отметить, что некоторые названия, упомянутые в названиях песен, изменились с момента создания этих записей. Например, провинция Хайбер-Пахтунхва (Khyber Pakhtunkhwa) в 1951 году носила имя Северо-Западная пограничная провинция (Northwest Frontier Province).
🔗Spotify | AppleMusic