Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🔧Представь: ты создаёшь алгоритмы для автономных автомобилей...
Звучит как фантастика? Не для Московского Политеха.
Продолжаем рассказывать о магистерских программах Передовой инженерной школы технологического лидерства «FDR». Сегодня — заключительная часть нашей серии.
На программе «Программная инженерия в автомобилестроении» ты освоишь полный цикл разработки ПО для умных автомобилей: от программирования на Python, C++ и Java до работы с искусственным интеллектом, машинным обучением и системами автономного вождения.
→ Предыдущие части ищи по хештегу #FDR
Проголосовать | @mospolytech
✈️Будущее транспорта — за тобой!
Рассказываем о магистерских программах Передовой инженерной школы технологического лидерства «FDR» Московского Политеха.
Хочешь создавать электромобили и умные системы для них? Тогда программа «Электрифицированные транспортные средства» — твой правильный выбор!
Почему мы?
- Эксперты и преподаватели — специалисты из индустрии
- Работа в современных лабораториях
- Реальные проекты с первого курса
- Практический опыт и конкурентное преимущество
→ P.S. Предыдущие части ищите по хештегу #FDR
Проголосовать | @mospolytech
🏎Где можно работать с настоящими гоночными автомобилями?
В магистратуре Московского Политеха!
Продолжаем рассказывать про магистерские программы Передовой инженерной школы технологического лидерства «FDR».
Например, в программе «Гоночный инжиниринг» собраны все актуальные особенности современного гоночного мира. Подробнее читайте в карточках.
→ Предыдущую часть ищите по хештегу #FDR
Проголосовать | @mospolytech
🔩Рассказываем о магистратуре ПИШ технологического лидерства «FDR»
В течение недели мы будем публиковать карточки с подробной информацией о магистерских программах Передовой инженерной школы технологического лидерства «FDR».
В первый день рассказываем о программе «Инженерный дизайн и стилистика транспортных средств»
P.S. Дальше найти информацию вы сможете по хештегу #FDR
Проголосовать | @mospolytech
Franklin D. Roosevelt was the 32nd U.S. President. He led the country through the Great Depression by creating jobs and helping people with new programs. He also guided the U.S. during World War II. FDR was the only president elected four times—last elected on November 7, 1944, and started his fourth term on January 20, 1945. After his presidency, the 22nd Amendment was passed, limiting presidents to two terms. 🇺🇸🗳️
[Read more]
@googlefactss
#FDR#USPresident#History#GreatDepression#WWII#22ndAmendment