es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El executor de un solo hilo de Django ASGI ya está en uso, lo que causaría un error de implementación por bloqueo.

Mi comando de ejecución para una aplicación Django con ASGI utilizando gunicorn se ve así:

gunicorn -b '0.0.0.0:8000' myproject.asgi:application -w 4 -k uvicorn.workers.UvicornWorker --access-logfile /logs/access.log --access-logformat "%(h)s %(l)s %(u)s %(t)s %(r)s %(s)s %(b)s %(f)s" >> /logs/error.log

Cuando intento acceder a cualquier punto final de la aplicación, obtengo el error “Se está utilizando un ejecutor de un solo hilo, bloquearía”.

Estoy usando las siguientes versiones de paquetes:

Django=3.2.4
asgiref==3.4.0
uvicorn==0.15.0
gunicorn==20.1.0
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Single thread executor already being used, would deadlock” indica que hay un problema con la configuración de concurrencia de la aplicación.

    El comando de ejecución dado para la aplicación ASGI de Django con Gunicorn parece correcto e incluye las configuraciones recomendadas para ejecutar la aplicación con los workers de Uvicorn. Sin embargo, el error sugiere que puede haber un conflicto entre el diseño de una sola hebra de la conexión de base de datos de Django y el diseño multiproceso de los workers de Uvicorn de Gunicorn.

    Una solución potencial a este problema es configurar el tipo de worker de Gunicorn para que sea “sync” en lugar de “uvicorn.workers.UvicornWorker”. Esto se puede hacer eliminando la opción “-k uvicorn.workers.UvicornWorker” del comando de ejecución.

    Alternativamente, el problema puede estar relacionado con la versión de la biblioteca asgiref. Se recomienda actualizar la biblioteca a la última versión (actualmente 3.4.1) para garantizar la compatibilidad con Django 3.2.

    En resumen, para solucionar el error “Single thread executor already being used, would deadlock” al ejecutar una aplicación ASGI de Django con Gunicorn y workers de Uvicorn, intente cambiar la configuración del tipo de worker o actualizar la versión de la biblioteca asgiref.

Comments are closed.