Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#offers
#Алматы
#КультМедиа
english.news.cn в поисках корреспондента в алматинское отделение ИА «Синьхуа»
обязанности
• подготовка статей на русском и английском языках, редактирование новостей и пресс-релизов, рерайт материалов других СМИ
• работать с исследованиями и статистикой, мониторинг информационного пространства, tg-каналы и wa-чаты пресс-служб, отслеживание и обеспечение оперативной информацией
• организация интервью и получение комментариев у пресс-служб и экспертов
требования
• высшее образование – журналистика, филология
• опыт работы на аналогичной позиции не менее 3-х лет
• грамотная устная и письменная речь на русском и английском языках, не ниже уровня Intermediate
• знание казахского и китайского языков будет большим плюсом
условия
• хороший социальный пакет
• заработная плата привязана к курсу доллара
• возможность получения опыта работы с международными журналистами
• возможны частые командировки по Казахстану и Центральной Азии
зп $1300-1400 на руки
откликнуться
также требуется видеооператор-монтажер, зп $1400-1500, откликнуться можно тут
t.me/cult_media
#offers
#Astana
#КультМедиа
EuroNews хаб в поиске продюсеров, журналистов, ведущих, многопрофильных операторов, цифровых редакторов, менеджеров в академию и в продакшен, откликнуться можно тут, полная занятость, Астана
t.me/cult_media
🌟EAR BUDS @ ₹39🌟
🔥LOOT DEAL OF THE DAY🔥
🛍Grab fast before it gets Out of stock. Get similar deals in future by joiningLoot Indian Deals🛍
🔰Note- Check all deals instantly 🔰
#Loots#Indian#Deals#offers
Join 11Wickets & Get ₹5000*. Use PROMOCODE FTD50.
Download the app now 👉🏻https://11wickets.sng.link/Dfcpe/ljeu
T&C apply.
.
.
.
#11Wickets#FantasySports#Offers#DownloadTheApp#Cricket#FantasyCricket#FTD50#FirstTimeDeposit