Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
#LArlésienne#Suite1#Suite2#Bizet#NathalieStutzmann
L'ARLÉSIENNE, SUITE N.º 1, SUITE N.º 2
A pesar de las malas críticas de la música incidental, Bizet arregló su obra en una suite de cuatro movimientos. Hoy conocida como L'Arlésienne Suite n.º 1, esta suite emplea una orquesta sinfónica completa sin coro. Su estreno tuvo lugar en un concierto ofrecido por la Orquesta Pasdeloup el 10 de noviembre de 1872.
Movimientos
🎵I. Prélude, Allegro deciso. (Marcha de los reyes)
🎵II. Minuet, Allegro giocoso.
🎵III. Adagietto.
🎵IV. Carillon, Allegro moderato .
La suite comienza con un tema fuerte y energético, basado en el villancico navideño "La marcha de los reyes", a los violines. A continuación, el tema se repite durante varias secciones. Tras alcanzar el clímax, el tema se desvanece. Es proseguido por el tema asociado con El Inocente, hermano de Frédéri, el héroe. El Prélude concluye con el tema asociado al propio Frédéri. El segundo movimiento se parece a un minueto, mientras que el tercero es más emocional y las cuerdas tocan con la sordina puesta. El último movimiento, Carillón, presenta un patrón repetitivo, como una campana, interpretado por las trompas, imitando el tañido de una campana de iglesia.
L'Arlésienne: Suite n.º 2, también escrita para orquesta sinfónica, fue arreglada y publicada en 1879, cuatro años después de la muerte del compositor, por Ernest Guiraud, empleando los temas originales de Bizet (aunque no todos ellos pertenecían a la música incidental de L'Arlésienne).
Movimientos
🎵I. Pastorale
🎵II. Intermezzo
🎵III. Minuet
🎵IV. Farandole (baile provenzal)
La segunda suite se suele acreditar a Bizet dado que fue él quien compuso los temas y la orquestación básica.
@ClasicaAlAtardecer
#LArlésienne#Suite1#Suite2#Bizet#NathalieStutzmann
L'ARLÉSIENNE, SUITE N.º 1, SUITE N.º 2,
La música incidental de la obra de Alphonse Daudet L'Arlésienne (normalmente transcrita como 'La chica de Arlés') fue compuesta por Georges Bizet para el estreno de la obra el 1 de octubre de 1872 en el Teatro Vodevil (hoy conocido como Teatro Paramount). La arlesiana, título con el que conocida en español, consta de 27 números (algunos de unos pocos compases) para voz, coro y orquesta de cámara, algunos siendo pequeños solos y otros largos entreactos. El mismo Bizet interpretó el armonio tras los bastidores durante el estreno de la obra.
Bizet escribió varios temas semipopulares para la música pero también incorporó tres melodías existentes pertenecientes a una colección de música popular publicada por Vidal de Aix en 1864: Marcha de los reyes (Marcho dei Rei), Danza de los caballos fogosos (Danse dei Chivau-Frus) y Er dou Guet. La partitura alcanza finales de gran poder dramático con una gran economía de mediodía. Aun así recibió críticas negativas tras su estreno y no se interpreta habitualmente en su forma original. La obra en sí no tuvo éxito y concluyó tras sólido 21 interpretaciones. El caso es que había sido montada como reemplazo de última hora para otra obra que había sido prohibida por los censores y, por ello, la audiencia no es taba tan predispuesta a la nueva obra.
La música incidental ha sobrevivido y florecido, a pesar de todo. Se puede escuchar más frecuentemente en forma de dos suites, pero también hay grabaciones completas de la música.
@ClasicaAlAtardecer