Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Пожалуй, первым покажу содержимое самой большой коробочки ☺️ братец кролик котик ☺️ теперь точно никого из этой линейки покупать не буду😀 можно сказать, сердце успокоилось ☺️ вот этот бежевый мне нравится даже больше ☺️ такая булочка аппетитная (судя по тому, как шорты на попку налезали, булочки он точно любит😂)
#Алёнкина_коллекция#hani
Hani from Yunnan China — Hani Polyphonic Singing in Yunnan China (Sublime Frequencies, 2024)
#traditional#field_recording#hani#choral#babi#mepa#chiwo#labi#lahe#meba#China
Альбом Hani Polyphonic Singing in Yunnan China демонстрирует уникальные традиции полифонического пения народа хани — этнической группы, численностью около 1,5 миллионов человек, проживающей на юге китайской провинции Юньнань. Меньшие сообщества хани также встречаются в соседних Лаосе и Вьетнаме. В языковом отношении хани связаны с ветвью йи тибето-бирманской языковой семьи.
Музыкальные традиции хани отличает хоровой стиль, где голоса накладываются друг на друга с небольшим временным сдвигом, создавая эффект перекатывающегося, как бы каскадного звучания. При этом каждый участник добавляет свою вариацию мелодии. Такое сочетание черт создает, с одной стороны, необычное даже для Юго-Восточной Азии пение, напоминающее тибетскую духовную музыку, а с другой — сближает его с европейскими мессами и мотетами позднего Средневековья и эпохи Возрождения.
Ансамбль также использует традиционные инструменты народа хани, такие как баби (лист дерева, используемый как духовой инструмент), мепа (лист дерева, свернутый в форме рога), чиво (трехструнный смычковый инструмент), лаби (бамбуковая флейта с шестью отверстиями), лахе (небольшая трехструнная лютня) и меба (вертикальный язычковый инструмент).
🔗Bandcamp