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

时间:2017-03-28 13:31:42

标签: javascript ajax django http-status-code-504

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

但问题是每次从进程开始14.59分钟后,加载程序停止并且状态更改为完成。但是在后台运行的进程尚未完成。那段时间后页面崩溃了。完成该过程后,我将结果绑定在网页中的标记下。在该标记中,出现错误 504(网关超时)。在Web控制台日志中无法加载资源:服务器响应状态为504(网关超时),打印出上述错误。如果有人知道请帮我解决这个问题。

那段时间后django正在关闭连接吗?如果是这样,可以在django设置(settings.py)中提及超时。我尝试在ajax调用中给出超时但同样的问题返回。我怀疑是django开发服务器。在Django开发服务器中是否有超时。但是当我搜索这个问题时,我发现,在 nginx 服务器中出现了同样的问题。 django是依赖于nginx还是使用它?

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

1 个答案:

答案 0 :(得分:3)

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

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

此外,您应该处理ajax调用的超时:

$.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/