Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌎 In Papua New Guinea, the Kaningara people of the Sepik River region perform a crocodile-scarification ritual. Teenage boys undergo elaborate skin-cutting ceremonies that create raised scars resembling crocodile scales, symbolizing a spiritual connection with the river’s sacred crocodiles. The process involves hundreds of cuts and can last several hours. ✨
#ritual⚡#anthropology⚡#tradition
👉subscribe Interesting Planet
👉more Channels
🌎 In Japan, families practice the Obon Festival, where people clean ancestors’ graves and light lanterns to guide spirits home. This Buddhist tradition has been celebrated for over 500 years, with massive lantern floats illuminating rivers in regions like Kyoto. ✨
#culture⚡#ritual⚡#festival
👉subscribe Interesting Planet
👉more Channels
🌎 On the island of Bali, the Ngaben cremation ceremony is a vital tradition where families publicly cremate relatives in elaborate towers and animal-shaped sarcophagi. The ritual represents freeing the soul so it can reincarnate, with some ceremonies drawing crowds of thousands for a single cremation. ✨
#culture⚡#ritual⚡#Bali
👉subscribe Interesting Planet
👉more Channels
Люди Леса — Другие шепоты, другие тени (2023)
С радостью презентуем вам новый альбом нового проекта!
Пишите свои отзывы и ощущения: нам интересно!
Люди Леса - новый проект музыканта и путешественника Александра Старостина и вокалистки Яны Вевы, создающих неповторимую атмосферу сакральных ритуалов, перенесенных из древней эпохи в постапокалиптический мир ближайшего будущего. Народный вокал и этнические инструменты здесь проявляются словно из заметаемых снегом пустых пространств. Тревожное предчувствие грядущих темных времен.
Яндекс музыка: https://music.yandex.ru/album/27881784
Сбер звук: https://zvuk.com/release/31687189
Остальные платформы: https://clck.ru/376BPi
#DarkFolk#Ritual#FolkAmbient
💡🔦Soul Food x figura.fon💡🔦
Вечер электронной музыки с гостями изкреативной студии figura.fon
#electronic#triphop#ambient#experimental#techno#idm#ritual
🕰
13 декабря (суббота)
17:00 – 23:00
👽
Electric Blue
Vanya
Be Kompromissed
Chaika
Unculture Theory
Microamp
Xonwy
nothing is real
📍
Красная Поляна, пер. Ореховый 2а, Soul Food