Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
📺- CONTROL DE AEROPUERTOS: USA -📺
Título original: To Catch a Smuggler
Género:#Reality
Temporadas: 9 📡
Año: 2020 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/nzuvwHLShEQ
Sinopsis:
Una serie que explora las historias cargadas de intensidad y emociones protagonizadas por la patrulla aduanera de Estados Unidos en algunos de los aeropuertos más concurridos del mundo por millones de pasajeros diariamente. Desde el Aeropuerto Internacional de Los Ángeles, Aeropuerto La Guardia y el Aeropuerto John F. Kennedy, entre otros. Descubra cómo se capturan a estos traficantes y sus cargamentos escondidos en lugares nunca imaginados.
Disponible:Disney+
@SeriesClubHD
🎥- EL GRAN BRUNCH -🎥
Título Original: The Big Brunch
Género:#Reality
Temporadas: 1 📼
Año: 2022
Origen: EEUU 🇺🇸
Tráiler:dai.ly/x8fe8e2
Sinopsis:
The Big Brunch es una serie de competencias de cocina que celebra las voces culinarias más inspiradoras y desconocidas del país.
A los chefs se les ofrecerá la oportunidad de compartir sus historias y sus sueños comerciales, al mismo tiempo que competirán por un premio que les cambiará la vida. Todo mientras busca formas innovadoras y personales de redefinir lo que significa cenar entre las 11 a.m. y 3 p.m. La serie, además de dar a conocer chefs busca ser la oportunidad de que todo el mundo se dé cuenta de que tienen al menos un amigo, un familiar o un compañero de trabajo que es extraordinario en lo que hace y lo positivo que es, poder apoyarlo en la búsqueda de sus sueños.
Disponible:Max
@SeriesClubHD
📺- IN THE EYE OF THE STORM -📺
Título Original: In The Eye of the Storm
Género:#Reality
Temporadas: 1📡
Año: 2024
Origen: EEUU 🇺🇸
Tráiler: youtu.be/BdMJ3G9Otqw
Sinopsis:
Desde tornados hasta incendios forestales, las imágenes inmersivas capturan el epicentro de impactantes desastres naturales en tiempo real como nunca antes.
Disponible:Movistar+ | Max
@SeriesClubHD
📺- LA CASA DE EMPEÑOS -📺
Título original: Pawn Stars
Título Alternativo: Estrellas del Empeño
Género:#Reality#Comedia
Temporadas: 17 📡
Año: 2009 - Presente
Origen: EEUU 🇺🇸
Tráiler: youtu.be/S46rcW5ADV4
Sinopsis:
Rick Harrison y su familia poseen y dirigen una casa de empeños en Las Vegas. Compran, venden y tasan artículos de valor histórico.
Disponible:A Tres Player | TiviFy
@SeriesClubHD
🎥- CATFISH: MENTIRAS EN LA RED -🎥
Título Original: Catfish: The TV Show
Género:#Reality#Romántica#Drama#Documental
Temporadas: 9 📼
Año: 2012 - Presente
Origen: EEUU 🇺🇸
Tráiler:youtu.be/JbQyoH819rM
Sinopsis:
Nev Schulman y Max Joseph ayudan a las personas que se han enamorado en Internet a comprobar la autenticidad de la identidad de sus amantes.
Disponible:Pluto TV | Movistar+ | Paramount+
@SeriesClubHD