我目前正在使用 ETA 功能和 redis 代理在芹菜中试验未来的任务。使用 redis 代理的已知问题之一与可见性超时有关:
如果任务未在可见性超时内确认,则该任务将重新交付给另一个工作人员并执行。
这会导致ETA/倒计时/重试任务出现问题,其中执行时间超过可见性超时;事实上,如果发生这种情况,它将再次执行,并且再次循环执行。
我可以设想的一些任务将在数周/数月的时间尺度上具有预计到达时间。将visibility timeout
设置得足够大以包含这些任务可能是不明智的。
使用 redis 代理处理这些任务是否有任何前进的途径?我知道这个问题。更换经纪人是唯一的选择吗?
我通过以下方式使用 redis 执行此操作:
我们的客户可以安排发布他们的某些内容。我们将版本存储在我们的数据库中,并显示它应该执行的时间。
然后,我们使用芹菜节拍执行定期任务(每小时或适合您的任务(,检查我们的发布表,了解在下一个时间段内安排的版本(再次是小时或适合您的时间(。 如果找到任何内容,我们会用芹菜为他们安排任务。这使我们能够有一个短暂的预计到达时间。