使用大型ETA安排芹菜任务

时间:2017-08-04 23:59:08

标签: python redis celery

我目前正在使用ETA功能和redis代理在celery中尝试未来的任务。使用redis代理的一个已知问题与visibility timeout

有关
  

如果在“可见性超时”中未确认任务,则该任务将重新传送给另一个工作人员并执行。

     

这导致ETA /倒计时/重试任务出现问题,执行时间超过可见性超时;事实上,如果发生这种情况,它将再次执行,并再次循环执行。

我可以设想的一些任务将在数周/月的时间尺度上有一个ETA。将visibility timeout设置得足够大以包含这些任务可能是不明智的。

使用redis代理处理这些任务是否有前进的路径?我知道this question。改变经纪人是唯一的选择吗?

1 个答案:

答案 0 :(得分:0)

我通过以下方式使用redis:

我们有可以安排发布其某些内容的客户。我们将发布及其执行时间存储在数据库中。

然后,我们使用芹菜拍子执行一项定期任务(每小时一次或适合您的时间),该任务检查我们的发布表以查找下一个时期内(预定的小时数或适合您的时间)安排的发布。如果发现任何东西,我们将为他们安排芹菜任务。这使我们的ETA较短。