Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🌹🌼 Bienvenido #marzo🌻🌺
🥳 Muchas felicidades 🎊
para todos los
♓ Piscis y ♈ Aries
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨🤲💖
Si tienes el poder de hacer feliz a alguien, hazlo. El mundo necesita más de eso.
Y recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO de hasta el 10% 🎂
Con el reporte para el lunes 02 de #marzo, el dólar oficial abre el nuevo mes consolidando la tendencia alcista de febrero y quedando a tan solo céntimos de la barrera de los 420 bolívares.
📊Análisis 02-Mar (Publicado hoy)
* USD: 419,98 Bs. (+2,63 Bs.) 📈
* EUR: 495,60 Bs. (+2,49 Bs.) 🚀
* CNY: 61,24 Bs.
* RUB: 5,44 Bs.
@DolarBCV
📈Corte Semanal (Lun 23-Feb al Lun 02-Mar)
* Lunes 23-Feb: 405,35 Bs.
* Lunes 02-Mar: 419,98 Bs.
* Variación de lunes a lunes: +14,63 Bs. (+3,61%) 🚩
Clave: El ritmo de devaluación no da tregua al iniciar marzo. El incremento de hoy (+0,63%) mantiene la inercia con la que cerró febrero. Por su parte, el Euro ya se ubica por encima de los 495 Bs., lo que sugiere que la barrera de los 500 bolívares podría ser alcanzada esta misma semana si persiste el ajuste promedio de 2 a 3 bolívares diarios.
#dolar
#euro
#noticias