【发布时间】:2017-08-04 23:59:07
【问题描述】:
我目前正在使用 ETA 功能和 redis 代理在 celery 中试验未来的任务。使用 redis 代理的已知问题之一与 visibility timeout 有关:
如果在可见性超时内未确认任务,则该任务将重新交付给另一个工作人员并执行。
这会导致执行时间超过可见性超时的 ETA/倒计时/重试任务出现问题;事实上,如果发生这种情况,它将再次执行,并在循环中再次执行。
我可以设想的一些任务将有一个以周/月为时间尺度的 ETA。将visibility timeout 设置得足够大以包含这些任务可能是不明智的。
是否有任何通过 redis 代理处理这些任务的途径?我知道this question。更换经纪人是唯一的选择吗?
【问题讨论】:
-
你有解决这个问题的方法吗?
-
不幸的是,我没有,但 celery 开发团队似乎正在跟踪一个类似的问题:github.com/celery/celery/issues/4522