Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
El tipo de cambio publicado por el BCV es el promedio ponderado resultante de las operaciones diarias de las mesas de cambio activas de las instituciones bancarias participantes.
EUR. 173,66166672
CNY. 20,82021936
TRY. 3,60752787
RUB. 1,84595564
USD. 148,44400000
Fecha Valor: Lunes, 01 #Septiembre 2025
El tipo de cambio publicado por el BCV es el promedio ponderado resultante de las operaciones diarias de las mesas de cambio activas de las instituciones bancarias participantes.
EUR. 40,56535843
CNY. 5,17239724
TRY. 1,07591354
RUB. 0,40427113
USD. 36,64540000
Fecha Valor: Lunes, 02 #Septiembre 2024
🍂🍁 Bienvenido #septiembre🍁🍂
🥳 Muchas felicidades 🥳
para todos los
♍ Virgo 😇
y
♎ Libra ⚖️
que cumplen
años este mes
Acá les dejamos una ✨#frase motivacional✨ para empezar el mes 🤲
📝👇🏻👇👇🏽👇🏾👇🏿
Si te equivocas, enhorabuena, es porque tú si lo has intentado
🌦️🔝 Bienvenido #septiembre🔝🌦️ con "S" de...
🥳 Muchas felicidades 🎊
para todos los
♍ Virgo 😇
y
♎ Libra ⚖️
que cumplen años este mes
Recuerden que si hacen un pedido en su cumpleaños reciben un DESCUENTO🎂🎉
Acá les dejamos una ✨#frase motivacional✨🤲💖👇🏻👇👇🏼👇🏽👇🏾👇🏿
Quizás todos los días no sean buenos, pero siempre hay algo bueno todos los días, solo tienes que aferrarte a ello.
¡Feliz inicio de mes!
⛈️☀️🌧️😌#undiaalavez
https://www.instagram.com/reel/Ch-N5FoLFoT/?igshid=YmMyMTA2M2Y=