关于javascript:无法加载资源:服务器响应状态为504(网关超时)

Failed to load resource: the server responded with a status of 504 (Gateway Timeout)

我正在使用Django开发项目-python,javascript。当我从视图中调用一个长时间运行的过程(耗时)约20分钟以上时,该过程成功启动。我在ajax中使用了loader来通知用户该进程正在运行。该过程完成后,加载程序将停止并更改为完成状态。

但是问题出在进程启动14.59分钟之后,每次加载器停止运行并且状态更改为完成。但是后台运行的进程尚未完成。在那之后页面崩溃。完成该过程后,我将结果绑定到网页中的标签下。在该标签中,出现错误504(网关超时)。在Web控制台日志中,无法加载资源:服务器以状态504(网关超时)进行响应,并显示上述错误。如果有人知道,请帮助我解决此问题。

django是在那之后关闭连接吗?如果是这样,则可以在Django设置(settings.py)中提及超时。我尝试在ajax调用中给出超时,但是同样的问题又返回了。我的怀疑是在Django开发服务器上。 django开发服务器中是否存在超时?但是,当我搜索此问题时,发现在Nginx服务器中出现了相同类型的问题。 Django是依靠nginx还是使用它?

如果有任何进一步的说明,我试图提供有关我的问题的所有信息,请告知我。


服务器始终在特定时间后关闭其连接,可以通过更改其配置来对其进行修改,但这不是一个好的方法。
我建议您尝试通过以下方法减少脚本花费的时间:

  • 优化代码。
  • 通过缓存经常使用的数据
  • 使用后端服务来处理您的数据并将其存储在可以快速访问的临时存储(例如内存缓存或Redis)中。

您还应该处理ajax调用的超时:

1
2
3
4
5
6
7
8
9
$.ajax({
    ...
    timeout: 1000,
    error: function(jqXHR, textStatus, errorThrown) {
        if(textStatus==="timeout") {
           //do something on timeout / show appropriate message.
        }
    }
});?

调整性能和优化编码技术从而减少时间的参考:
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/