Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
ЛАЗЕРНЫЙ БИЛЕТ ИЗ СЕРИИ «ЦЕРЕМОНИЯ ЗАПУСКА» | ОФИЦИАЛЬНЫЙ МЕРЧ | AZURLANE
🌟Персонажи:
🌟 Z52
🌟 Fritz Rumey
🌟 Raffaello
🌟 Moskva
🌟Детали:
⭐ Товар ЛИМИТИРОВАН, продажи будут до 12 МАРТА
⭐Предпродажа, отправка на склад в течение 200 дней
⭐Размеры: 20х7 см
🌟Цена: 650 🌟 (рублей)
🌟Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
🌟Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
🌟Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#AzurLane@astroknightshop
#Z52@astroknightshop
#FritzRumey@astroknightshop
#Raffaello@astroknightshop
#Moskva@astroknightshop
🍨Сладкий дресс-код: CHARMSTORE и Raffaello предлагают начать деловой сезон со вкусом
Пока все скупают канцтовары и грустят по уходящему лету, бренды нашли изящный способ «подсластить» возвращение к рутине.
👗Российский бренд одежды CHARMSTORE в партнерстве с Ferrero (владельцем марок Raffaello и Ferrero Rocher) выпустил капсульную коллекцию, чтобы возвращение в офис или в университет после каникул было максимально приятным.
Идея в том, чтобы превратить начало делового сезона из обязанности в dolce vita.
👗Что внутри «конфетной» коллекции?
• Платья: объемные модели с открытой спиной и рукавами-буфами в ванильных и золотых оттенках.
• Блузы: акцентные модели с бантами для строгих, но нескучных образов.
• Брюки-баллоны и аксессуары: золотистые сумки-мешки и… чалмы.
🎨 Дизайн и палитра:
Вся коллекция пронизана кондитерской эстетикой: нежные пастельные оттенки, кремовые и золотистые тона, летящие ткани и лаконичные, но запоминающиеся формы.
🛍️ Где брать?
В кондитерском отделе
Коллекция доступна с 19 августа в бутиках CHARMSTORE и на официальном сайте fashion-бренда.
👛Почем радость?
Платья - от 29 до 42 коробок Raffaello или Ferrero Rocher
Сумки - от 9 до 13 коробок
Чалмы - от в 6 до 8 коробок сладостей в рублевом эквиваленте**
⭐️Коммент для маркетологов (со «звездочкой»)
Почему коллаборации с конфетами в сезон «Back to School» — это «пятерка» за стратегию и тактику?
Во-первых, бренды «играют на эмоциях». Конец лета и каникул часто ассоциируется с грустью и стрессом. Бренды предлагают «дофаминовую прививку» — покупку, которая становится наградой и утешением.
Ассоциация новой блузки с нежным вкусом конфет удваивает эффект, превращая рутинный шопинг в акт заботы о себе.
Во-вторых, это расширение аудитории и отличный инфоповод. Коллаборации создают шум, привлекая внимание как fashion-шопоголиков, так и любителей сладкого.
Именно так бренды могу «обменяться» лояльной аудиторией и выделиться на фоне стандартных «осенних коллекций».
В итоге, одежда перестает быть просто одеждой, а конфеты — просто десертом. Они становятся частью общего лайфстайл-сообщения: «Начинайте новый сезон красиво и со вкусом!»
Из таких же остроумно-пищевых коллабов в нашей стране вспоминается апрельский дуэт Роллтон х Beauty Bomb. Из того, что #неунас — rhode х Krispy Creame в 2023 и Crocs х McDonalds (классика)
А вообще марки из мира fashion и красоты активно сотрудничают со «вкусными» марками и для этого есть даже отдельный тренд под названием #foodcore
………………..
*Источник: соцсети и официальный сайт марки
**Как мы считали
1 коробка Raffaello (150 г) = 450 руб
1 коробка Ferrero Rocher (200 г) = 650
#августомания@girlinmall#коллаб@girlinmall#charmstore#raffaello