Estoy desarrollando un proyecto usando django - python, javascript. Cuando llamo a un proceso de ejecución prolongada (que consume mucho tiempo) aproximadamente más de 20 minutos desde las vistas, el proceso se inicia correctamente. Usé el cargador en ajax para notificar al usuario que el proceso se está ejecutando. Una vez que se complete el proceso, el cargador se detendrá y cambiará al estado completado.
Pero el problema es que cada vez que transcurren 14,59 minutos desde que se inició el proceso, el cargador se detiene y el estado cambia a completado. Pero el proceso que se ejecuta en segundo plano aún no se ha completado. La página se bloquea después de ese tiempo. Después de completar el proceso, vinculo el resultado con una etiqueta en la página web. En esa etiqueta surge el error 504 (Gateway Timeout) . En el registro de la consola web Error al cargar el recurso: el servidor respondió con un estado de 504 (Tiempo de espera de puerta de enlace) , se imprime el error anterior. Si alguien sabe, por favor, ayúdame a solucionar esto.
¿Django está cerrando la conexión después de ese tiempo? Si es así, es posible mencionar el tiempo de espera en la configuración de Django (settings.py). Intenté dar tiempo de espera en la llamada ajax pero vuelve el mismo problema. Mi duda está en el servidor de desarrollo de django. ¿Hay tiempo de espera en el servidor de desarrollo de Django? Pero cuando busqué este problema, encontré que en el servidor nginx surge el mismo tipo de problema. ¿Django depende de nginx o lo usa?
Traté de proporcionar toda la información sobre mi problema si hay más aclaraciones, házmelo saber.
El servidor siempre cierra su conexión después de un período de tiempo determinado, que puede modificarse cambiando su configuración, pero ese no sería un buen enfoque. Le sugiero que intente reducir el tiempo que toma el script:
También debe manejar el tiempo de espera de la llamada ajax:
$.ajax({ ... timeout: 1000, error: function(jqXHR, textStatus, errorThrown) { if(textStatus==="timeout") { //do something on timeout / show appropriate message. } } });Referencias para ajustar el rendimiento y optimizar las técnicas de codificación, reduciendo así el tiempo: https://docs.djangoproject.com/en/1.10/topics/db/optimization/ https://docs.djangoproject.com/en/1.10/topics/performance/ https://realpython.com/blog/python/caching-in-django-with-redis/