Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Субботнее😬
«Когда мой брат Гарольд попросил меня быть шафером на его свадьбе, ну что я мог здесь сказать… Конечно, парень, ты всегда ведь помогал мне! Когда вот меня лечили от алкоголизма, когда машину свою не мог найти…».
Стив Бушеми часто появлялся в фильмах Адама Сэндлера в небольших эпизодах, но это камео в комедии «Певец на свадьбе», на мой взгляд, получилось самым смешным.
Сегодня Бушеми, кстати, исполнилось 68 лет.
#ВИДЕОТЕКА
#TheWeddingSinger
#SteveBuscemi
#AdamSandler
#АндрейГаврилов
#VHS
В эти дни ровно 30 лет назад на экраны вышел фильм Роберта Родригеса «Отчаянный». Не то ремейк, не то продолжение его же дебютной работы «Музыкант» — с другими актерами, с бОльшим масштабом и бюджетом. Хотя здесь скорее из категории «нано» перешли в разряд «микро», и на тех же дублерах пришлось здорово экономить. Но у Родригеса этот боевик получился настолько лихим, стебным и запоминающимся, что на все недостатки бюджета и сюжетную простоту уже как-то на автомате не обращаешь внимание.
Именно здесь Антонио Бандерас впервые заявил о себе как главный мачо мирового кино, который и наркомафию с двух рук штабелями уложит, и сердце молодой Сальмы Хайек покорит, и песню Эль Марьячи вместе с группой Los Lobos в начальных титрах споет так зажигательно, что этот мотив и этот припев навсегда отпечатается в нашей памяти. Просто сравните его персонажа в «Отчаянном» с ролями у Педро Альмодовара или в той же «Филадельфии» Джонатана Демме, и все поймете сами.
Именно здесь Квентин Тарантино сделал заявку на звание одного из лучших рассказчиков анекдотов в истории кино (хотя и эту сцену, как говорил однажды Борис Хохлов, он тоже позаимствовал из одного гонконгского фильма). Именно здесь мы увидим самого наглого и бессовестного в мире бармена в исполнении Чича Марина. Именно здесь суровый Дэнни Трехо своими метательными ножами говорил красноречивее многих других актеров.
Наконец, именно в «Отчаянном» буквально с пролога мы с головой ныряем в этот коктейль из здорового киношного раздолбайства, откровенного стеба и невероятного куража, который Роберт Родригес на излете 90-х явно начнет терять. В начале нулевых постановщик получит для сиквела с претенциозным названием «Однажды в Мексике» карт-бланш, реально серьезный бюджет и шикарный актерский ансамбль. Но это кино в итоге получится в лучшем случае странным и вымученным.
Так что лучше запомните именно эту историю про Эль Марьячи. Сколько раз я бы ни смотрел этот фильм — всегда испытываю ровно те же эмоции, что и четверть века назад, когда вместе с дедом впервые наткнулись на пиратский показ «Отчаянного» по Копейскому телевидению в переводе Визгунова. И не смогли оторваться.
#ВИДЕОТЕКА
#ВИДЕОТЕКАКино1995
#Desperado
#Отчаянный
#AntonioBanderas
#АнтониоБандерас
#RobertRodriguez
#РобертРодригес
#QuentinTarantino
#КвентинТарантино
#CheechMarin
#ЧичМарин
#СтивБушеми
#SteveBuscemi
#ДэнниТрехо
#DannyTrejo