Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
¿Cuándo usar masilla para reparar la madera?
¿Cuándo es adecuado usar masilla para reparar madera? Descubre las situaciones más comunes y cómo sacar el máximo provecho de este recurso.
➡️ Leer más#carpinteria
¿Cómo decapar un mueble de madera?
Decapado químico, limpieza con arena, decapado térmico, lijado... Esta guía te presenta los 4 mejores métodos para decapar un mueble de madera pintado, antes de personalizarlo, repintarlo o tratarlo...
Leer más#carpinteria#decapado
Cómo instalar una cerradura de sobreponer en puerta de madera
[…] vamos a instalar una cerradura de sobreponer en puerta de madera. Pero, ¿y cuál es la finalidad de colocar una cerradura de sobreponer? Pues añadirle un complemento de seguridad extra o un…
Leer más#carpinteria#puertas
CutList Optimizer, calculadora de cortes
CutList Optimizer es una aplicación o software online que te permite hacer cálculos de los cortes que vas a efectuar, ya sea en chapas de madera, cualquier lámina, tela, etc. Así, podrás saber cuántos recortes puedes aprovechar de determinada superficie, qué área se desperdicia, etc., sin que tengas que improvisar.
Ver recurso#carpinteria#software#corte
La carcoma, el peor enemigo de la madera: qué es, cómo tratarla y formas de prevenirla
Descubre qué es realmente la carcoma y cuál es su mayor peligro. Aprende a identificarla antes de que sea demasiado tarde y cómo saber si está activa.
Evita el principal factor que atrae esta plaga, deshazte de ella y, sobre todo, previene futuros ataques a tus muebles y piezas de madera.
Leer más#carcoma#madera#tratamiento#carpinteria
➡️Xylazel anticarcoma de 5 l.#publi
¿Qué les parece esta #mesa multifuncional?🤔
Este diseño es realmente muy útil para espacios reducidos.🎮
#mueblesinteligentes#melamina#muebles#ahorrodeespacio#carpinteria#aprendamosjuntos
¿Qué les parece este Sillón mecedor? 🥳
¡Este diseño es realmente muy hermoso! 😍
#mueblesinteligentes#melamina#muebles#sillones#carpinteria#aprendamosjuntos#hazlotumismo#aprender
¡Mira estas ideas con madera para el hogar! 😍
Hoy te compartimos #ideas geniales que puedes realizar tu mismo en casa, solo necesitas un poco de madera y creatividad.👨🔧
#mueblesinteligentes#melamina#muebles#madera#carpinteria#aprendamosjuntos#hazlotumismo#aprende
📚 Para los amantes de la lectura, hoy te compartimos ideas de #libreros que puedes hacer tu mismo.👨🔧
#mueblesinteligentes#melamina#muebles#repisas#carpinteria#aprendamosjuntos#hazlotumismo#hogar#pallets#libros