Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Вебинару Алины Перловой для CWS на тему "Пампушки или маньтоу? Как переводить китайские реалии" и моему отчаянному и выстраданному решению продолжить учить китайский несмотря на вал работы посвящается...
Фрейм из маньхуа "Сквозь облака" Хуай Шан
#China#manhua#HuaiShang#PoYun
Достаточно одного скрина, чтобы объяснить, почему я не смогла бы подружиться с Янь Се: "Джо не делится едой!"
Фрейм из маньхуа "Сквозь облака" Хуай Шан
#China#manhua#HuaiShang#PoYun
Печальные новости с китайских полей
Платформа Kuaikan Manhua официально объявила об окончании выпуска маньхуа "Дерзай!" (Saye) по новелле У Чжэ. К сожалению, на сегодняшний день было адаптировано только 2/3 истории.
Ещё один осиротевший любимый проект.
#China#manhua#WuZhe#SaYe
Текущее состояние этого админа в одном фрейме (кто читал вторую арку маньхуа "Глобальный экзамен", тот поймёт эту осьминожку)
#China#manhua#MuSuLi#GaoKao
Вебинару Алины Перловой для CWS на тему "Пампушки или маньтоу? Как переводить китайские реалии" и моему отчаянному и выстраданному решению продолжить учить китайский несмотря на вал работы посвящается...
Фрейм из маньхуа "Сквозь облака" Хуай Шан
#China#manhua#HuaiShang#PoYun
Маньхуа по "Глобальному экзамену" уже добралась до 130-й главы (11 том, перевод здесь). Нам не только выкатили шикарную обложку, но и выдали один из моих любимых эпизодов с флешбэками из прошлого Великого Наблюдателя..
#China#novel#MuSuLi#manhua#GaoKao
К слову о тех маньхуа-адаптациях, которые ещё пока живут и здравствуют (тьфу-тьфу-тьфу). Наконец-то догнала онгоинг перевода "Глобального экзамена" по новелле Му Сули, а на днях получила третий печатный том! Отрадно.
Фрейм отражает текущение состояние: "Я и мульон дел"
#China#manhua#novel#MuSuLi#GaoKao
Крышесносный анонс! Оно живое! Оно настоящее!
Mainstream наконец-то показал обложку первого тома маньхуа Ди Цзюнь "Ты здесь". Даже не верится
В первый том вошли 39 глав вебтуна. Ждём в октябре-ноябре
#China#manhua#Djun#HereUAre