Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
🤩😮😎🆒🥳🔥😜⚡️🥺🙏🧑💻
Hoy es el día mundial de la
⚠️🔠🔠🔠🔠🔠🔠🅰️⚠️
🙂El 6 de agosto se celebra el día mundial de la sonrisa
😀 Celebra jugando Smile for me (10/10) en Steam:
Smile For Me es un juego de aventuras poco convencional de apuntar y hacer clic que te sitúa en el centro de un mundo abstracto,la gente es extraña, los rompecabezas son locos y el mundo esconde un secreto siniestro...
➖➖➖➖➖➖➖➖➖➖➖
Una sonrisa es un pasaporte
que abre todas las fronteras
➖➖➖➖➖➖➖➖➖➖➖
Contáctanos para cargar saldo en tus plataformas👇
✈️@jcslimcuba
🔓https://wa.me/5353717679
☎️ +5353717679
#saldodesteam#steamwallet#cuba#psn#battlenet#steam#apple#steamgiftcard#jcslimcuba#giftcards#appleitunes#tarjetasderegalo#steamcuba#fortnite#Amazon#amazonmusic#amazonprime#primevideo#promo
💳💳💳💳💳💳💳💳💳💳💳
⚠️👾👾👾👾👾
⚠️
🔡🅰️🔡🔡🔡🔡🅰️
✍️✍️✍️✍️✍️✍️✍️✍️
✍️✍️✍️✍️✍️✍️✍️✍️✍️✍️
Adquiera una tarjeta digital prepagada VISA Vanilla y hágase con un método de pago versátil y sencillo de utilizar en cualquier plataforma donde se acepte Visa 💳
Precios en USD
✏️
✏️➡️💲3️⃣3️⃣
✏️
✏️➡️💲6️⃣5️⃣
✏️
✏️
✏️➡️💲1️⃣2️⃣6️⃣
‼️🇨🇺 SERVICIO PARA
TODA #CUBA🇨🇺‼️
Con nosotros podrá tener acceso a esas opciones de pago online que siempre quiso pero no tenía ni idea de que podía hacerlo desde Cuba
Acceso a características Premium en aplicaciones de Diseño y Edición, suscripciones a almacenamiento en la nube, números extranjeros de teléfono virtuales, VPN en cualquier ubicación del mundo, software de producción de audio e imagen, desarrollo web, coding, etc
¡Libros, televisión y música online, videojuegos!
Podemos hacerle llegar suscripciones, códigos y tarjetas digitales de saldo a sus cuentas en...
🛒#Amazon#Prime
📱#Apple#iTunes
🎮#Battlenet (#Blizzard's World of Warcraft #WoW)
ℹ#Dota2
🎮#Garena
🕹#LeagueofLegends
📺#Netflix
🎮#Nintendo
🎮#Origin
🎮#PlayStation Network #PSN
🎮#Riot
🎵#Spotify
🎮#STEAM
💬#Telegram#Premium
📺#Twitch
🎮#Xbox Live
🇨🇺#Remesas#Pagos
📱 Tenemos alternativas para los pagos dentro de la Google Play Store con acceso a Google One y al Play Pass 📱
Contáctenos por #Telegram, por #Google, #Facebook, #Instagram, #Twitter y por #WhatsApp
💬@jcslimcuba
💬https://wa.me/5353717679
🌐https://m.me/jcslimcuba.fb
☎️ +5353717679
🖥https://linktr.ee/jcslimcuba
#saldodesteam#steamwallet#cuba#psn#battlenet#steam#apple#steamgiftcard#jcslimcuba#giftcards#appleitunes#tarjetasderegalo#steamcuba#fortnite#Amazon#amazonmusic#amazonprime#primevideo#promo#visa#vanilla