1

我有一个通过 mod_wsgi 在 Apache 上运行的 Django 服务器。我有一个庞大的后台任务,通过 API 调用调用,它在后台搜索电子邮件(通常需要几个小时),这是在后台完成的。

为了便于调试——因为异常和其他一切都在后台发生——我创建了一个 API 调用来运行任务阻塞。因此,浏览器实际上会阻塞这些时间并接收结果。

在 localhost 中,这很好。但是,在真正的 Apache 环境中,大约 30 分钟后,我收到 504 Gateway Timeout 错误。

如何更改设置,以便 Apache 允许 - 仅在此调试阶段 - HTTP 请求阻塞几个小时而不返回 504 网关超时?

我假设这可以在 Apache 配置中更改。

4

1 回答 1

1

您不应该在 Apache 进程中执行长时间运行的任务,甚至也不应该等待它们。使用 Celery 等后台任务排队系统来运行它们。让任何 Web 请求在排队后立即返回,并根据需要实施某种轮询机制,以查看作业是否完成并获得结果。

另外,您确定 504 不是来自某些前端代理(显式或透明)或负载均衡器吗?Apache 中没有默认超时,即 30 分钟。

于 2013-05-29T03:59:36.557 回答