我目前正在使用ETA功能和redis代理在celery中尝试未来的任务。使用redis代理的一个已知问题与visibility timeout:
有关如果在“可见性超时”中未确认任务,则该任务将重新传送给另一个工作人员并执行。
这导致ETA /倒计时/重试任务出现问题,执行时间超过可见性超时;事实上,如果发生这种情况,它将再次执行,并再次循环执行。
我可以设想的一些任务将在数周/月的时间尺度上有一个ETA。将visibility timeout
设置得足够大以包含这些任务可能是不明智的。
使用redis代理处理这些任务是否有前进的路径?我知道this question。改变经纪人是唯一的选择吗?
答案 0 :(得分:0)
我通过以下方式使用redis:
我们有可以安排发布其某些内容的客户。我们将发布及其执行时间存储在数据库中。
然后,我们使用芹菜拍子执行一项定期任务(每小时一次或适合您的时间),该任务检查我们的发布表以查找下一个时期内(预定的小时数或适合您的时间)安排的发布。如果发现任何东西,我们将为他们安排芹菜任务。这使我们的ETA较短。