javascript - 无法加载资源 : the server responded with a status of 504 (Gateway Timeout)

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

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

但问题是每次在进程启动 14.59 分钟后,加载程序停止并且状态更改为已完成。但是在后台运行的进程还没有完成。在那之后页面崩溃。该过程完成后,我将结果绑定(bind)在网页的标签下。在该标记中出现错误 504(网关超时)。在 Web 控制台日志 Failed to load resource: the server responded with a status of 504 (Gateway Timeout) 中,打印上述错误。如果有人知道请帮我解决这个问题。

Django 是否在那个时间后关闭了连接?如果是这样,是否可以在 django 设置 (settings.py) 中提及 timeout。我尝试在 ajax 调用中给出超时,但同样的问题返回。我怀疑是在 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/

关于javascript - 无法加载资源 : the server responded with a status of 504 (Gateway Timeout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43071013/

相关文章:

javascript - 使用 Ajax 在完整日历上显示数据而不显示记录

javascript - typescript 错误 : Property '0' is missing in type

java - struts2 Ajax错误?

javascript - 选中复选框时如何激活行的链接

django - 跨域 POST 请求的 CSRF 验证在生产中失败

javascript - FullCalendar 单击并拖动多个事件

javascript - 将自然数转换为三位字符串的简单算法是什么?

javascript - 加载更多 gif 无法正常运行

javascript - jsfiddle jquery ajax 没有按预期返回数据

json - Django HTTP 发布到相同的 URL