我有一个通过mod_wsgi在Apache上运行的Django服务器。我有一个大量的后台任务,通过API调用调用,在后台搜索电子邮件(通常需要几个小时)。
为了便于调试 - 作为异常以及后台发生的其他事情 - 我创建了一个API调用来运行任务阻止。因此,浏览器实际上会阻止这些时间并收到结果。
在localhost中这很好。但是,在真正的Apache环境中,大约30分钟后,我得到504网关超时错误。
如何更改设置以便Apache允许 - 仅在此调试阶段 - HTTP请求阻止几个小时而不返回504网关超时?
我假设可以在Apache配置中更改它。
答案 0 :(得分:1)
您不应该在Apache进程中执行长时间运行的任务,甚至不能等待它们。使用后台任务排队系统(如Celery)来运行它们。有任何Web请求在排队后立即返回,并根据需要实施某种轮询机制,以查看作业是否完整并可以获得结果。
另外,您确定504不是来自某些前端代理(显式或透明)或负载均衡器吗? Apache中没有默认超时30分钟。