Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🔥 13 июля фестиваль электронной музыки "Калейдоскоп" возвращается на Волга-Спорт-Арену с новым MEDIA ART эпизодом! 🔥
Вас ждет уникальное медиа-шоу на гигантских светодиодных экранах, три хедлайнера и два танцпола, один из которых под открытым небом!
Состав хедлайнеров:
📌Catmoonk – певец и диджей из Москвы, который откроет основную сцену своим мощным лайв-выступлением: DJ сет + вокал;
📌Highlite – диджеи и музыканты из Москвы, треки которых подписал на свой лейбл четырёхкратный поюедитель премии "DJ Awards" Solomun;
📌Blaktone – диджеи и музыканты из Санкт-Петербурга, треки которых играют на вечеринках по всему миру.
Прямо сейчас вы можете принять участие в розыгрыше и получить 5 билетов совершенно бесплатно!
🔗Условия розыгрыша: https://t.me/kaleidoscope_ulyanovsk/1116
Фестиваль пройдет при поддержке национального проекта «Туризм и индустрия гостеприимства».
#MEDIAART#ВолгаСпортАрена#Ульяновск#Музыка#Фестиваль
#ЦифровойКонтекст
Deep Cuts: искусство, которое думает 💌
С 3 по 5 июня в Калифорнийском университете в Санта-Барбаре проходит ежегодная выставка "Deep Cuts"от программы Media Arts and Technology🦋
В фокусе — работы на стыке науки, технологии и искусства:
— иммерсивные медиа
— нейросети и робототехника
— визуализация данных и перформансы
😇 Особый акцент — на AlloSphere: трёхэтажной сфере для объёмных научно-художественных визуализаций.
"Deep Cuts" — это пространство, где инженерия становится художественным методом, а медиаинсталляции — интерфейсом между человеком и информацией.
#DeepCuts#MediaArt#UCSB#новости
🎨 Тема следующей встречи Международной молодежной конференции "Креативный контент: в партнерстве с БРИКС" - Дизайн и Медиаискусство 🎨
Наше творческое путешествие продолжается - следующая онлайн-встреча состоится 26 ноября! 🙌
Мы погрузимся в захватывающие миры Дизайна👩🎨 и Медиаискусства👨💻, чтобы исследовать последние тренды, инновации и кросс-культурные идеи в странах-партнерах БРИКС - Беларусь, Боливия, Вьетнам, Казахстан, Куба, Малайзия, Нигерия, Таиланд, Уганда, Узбекистан🌍
👉 Если вам интересны дизайн, цифровое искусство и творческие медиа, прямо сейчас регистрируйтесь по ссылке: docs.google.com/forms/d/e/... 💌
Зарегистрированные участники получат ссылку на подключение к Конференции на указанную при регистрации почту за день до мероприятия.
Сертификаты📜 активным участникам Конференции будут выданы по итогу встречи.
Организатор - Проектный офис международного молодежного сотрудничества "Россия-БРИКС" при поддержке Фонда креативных индустрий Ульяновской области, Сообщества цифровых управленцев «я-ИТ-ы» и ОТРО «Санкт-Петербургский Союз дизайнеров».
✨Творим, общаемся, развиваемся вместе!✨
#BRICS#CreativeContent#Design#MediaArt#Conference#БРИКС#КреативныйКонтент#Дизайн#МедиаИскусство#Молодежь