【发布时间】:2017-08-21 14:42:54
【问题描述】:
我正在使用 django - python、javascript 开发一个项目。当我从视图中调用一个长时间运行的进程(耗时)大约 20 多分钟时,该进程成功启动。我在 ajax 中使用 loader 来通知用户进程正在运行。该过程完成后,加载程序将停止并更改为已完成状态。
但问题是每次在进程启动 14.59 分钟后,加载程序都会停止并且状态更改为已完成。但是在后台运行的进程还没有完成。在那之后页面崩溃。该过程完成后,我将结果绑定在网页中的标签下。在该标签中出现错误 504 (Gateway Timeout)。在 web 控制台日志 Failed to load resource: server 响应状态为 504 (Gateway Timeout),打印出上述错误。如果有人知道,请帮我解决这个问题。
django 在那之后是否关闭了连接?如果是这样,是否可以在 django 设置(settings.py)中提及 timeout。我尝试在 ajax 调用中给出超时但同样的问题返回。我的疑问是在 django 开发服务器上。 django开发服务器是否有超时。但是当我搜索这个问题时,我发现在 nginx 服务器中出现了相同类型的问题。 django 是依赖 nginx 还是使用它?
我试图提供有关我的问题的所有信息,如果有任何进一步的说明,请告诉我。
【问题讨论】:
-
您使用的是什么网络服务器?
nginx?可以在您的服务器配置中配置超时。 -
我没有使用任何网络服务器,我使用默认的 django 服务器,即 django 开发服务器。我还没有部署。
-
如果你有长时间运行的后台任务,你应该使用一些异步任务队列在带外运行它们 - 芹菜浮现在脑海中。它不仅可以解决此类问题,而且还可以避免您的 Web 服务器超载,并且在需要时通过在有许多不同的服务器上运行 celery 工作者来更轻松地扩展。
-
我不想将进程作为后台任务运行,用户必须等到长时间运行的进程完成
标签: javascript ajax django http-status-code-504