我正在使用django-python,javascript开发一个项目。当我从视图中调用一个长时间运行的过程(耗时)大约超过20分钟时,该过程成功启动。我在ajax中使用了loader来通知用户进程正在运行。过程完成后,加载程序将停止并更改为已完成状态。
但问题是每次从进程开始14.59分钟后,加载程序停止并且状态更改为完成。但是在后台运行的进程尚未完成。那段时间后页面崩溃了。完成该过程后,我将结果绑定在网页中的标记下。在该标记中,出现错误 504(网关超时)。在Web控制台日志中无法加载资源:服务器响应状态为504(网关超时),打印出上述错误。如果有人知道请帮我解决这个问题。
那段时间后django正在关闭连接吗?如果是这样,可以在django设置(settings.py)中提及超时。我尝试在ajax调用中给出超时但同样的问题返回。我怀疑是django开发服务器。在Django开发服务器中是否有超时。但是当我搜索这个问题时,我发现,在 nginx 服务器中出现了同样的问题。 django是依赖于nginx还是使用它?
如果有任何进一步的澄清,我试图提供有关我的问题的所有信息,请告诉我。
答案 0 :(得分:3)
服务器总是在特定时间后关闭其连接,可以通过更改其配置来修改,但这不是一个好方法。 我建议你尝试通过以下方式减少脚本所花费的时间:
此外,您应该处理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/