Недавно делал быстрый прототип асинхронного приложения в котором требовалось вызывать много синхронного кода. Да, я знаю, что это не лучший дизайн, но нужно было быстрое решение на один процесс и без очередей. Поэтому я выполнял код в потоках.
Выглядело это примерно так:
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
Sketch 8/100 👀.
Al final no me contuve, tuve que crear la versión a color de Cleopatra. Espero les guste. Regreso cuando tenga los primeros 10 bocetos listo. ¡Faltan 2!
Cualquier crítica es bien recibida ✨.
#Krita
Aprovechando este momento de inspiración pretendo crear alrededor de 100 rostros, con el fin de seguir mejorando, así que, espero que les guste estos bocetos. Y hasta los siguientes.
• Tiempo: 1-2 horas c/u
• Software: #Krita
3/100 👀
• Mis redes sociales: https://beacons.ai/yartydesign
Les recomiendo Beacons para los que tienen muchas cuentas de redes sociales. Pueden ver como quedó el mío :3.
Estudio de 2 horas aprox, aprendiendo otras técnicas. Me concentré más en las pinceladas y proporción; cero en los detalles.
Espero les guste. ⚓️
#Krita#Estudio
He descargado la versión Krita 5.0.2 y por fin he probado la opción de Grabadora. Es muy útil y cómodo al usar.
Elegí una referencia al azar e hice esta práctica rápida de 1 hora, para probar la opción de video.
#Krita#Estudio
¡Hola a todos! He publicado el siguiente proceso en mi canal de YouTube. Espero les guste.
Hasta los próximos proyectos. 💫
P. D. Si tienen alguna duda, siempre pueden preguntarme; ayudaré en lo que pueda. c:
#Proceso#Krita
Y aquí el proceso. Hubo una parte donde se me olvidó grabar, lo siento :')
P. D. Pueden encontrar música para sus vídeos en Audio Library y Jamendo (tiene licencia Creative Commons).
#Proceso#Krita
¡Saludos a todos!
He publicado el siguiente proceso en YouTube. Gracias a las personas que se suscribieron al canal. Poco a poco les mostraré cosas nuevas.
Hasta la próxima.
#Proceso#krita
Krita - профессиональный растровый графический редактор как для любителей, так и для профессиональных художников и иллюстраторов, использующих графические планшеты в процессе создания цифровой живописи как в домашних условиях, так и в игровых студиях. Программа имеет широкий функционал. Редактор поддерживает многослойную обработку изображений, предоставляет средства для работы с различными цветовыми моделями и обладает большим набором средств для цифровой живописи, создания скетчей и формирования текстур.
О ПРОГРАММЕ:
🗂Категория: #графика#редакторы#portable
🧐Версия: v5.2.11
💻ОС: Windows
💡Разрядность: x64
🌐Языкинтерфейса: русский
✅Установка: да
👨🏻⚕️Лечение: не требуется
#️⃣#Krita@SoftFULL