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

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

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

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

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

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

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

  • 优化您的代码。
  • 通过缓存经常使用的数据
  • 使用后端服务来处理您的数据并将它们存储在可以快速访问的临时存储中,例如 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/