【发布时间】:2021-05-01 08:31:59
【问题描述】:
我在 Redis 上使用 Celery 和 Django。
我的一些任务很长,大约需要1 hour。我知道这是次优的,最好我应该使用较短的任务,但这就是我得到的......
有时任务/工作人员会崩溃。这可能由于各种不重要的原因而发生。也许这个工人崩溃了、网络问题、被抢占时的现场实例、被 OOM 杀死或任何其他我无法“捕捉”和处理的意外原因。
我想确保尽快再次尝试该任务。
我可以使用ack_late,但是问题是这个任务有一个很长的超时时间(大约90分钟),这意味着如果任务开始并且2分钟后worker崩溃了,我现在将等待另一个88直到任务回到队列并开始在另一个工作人员上再次执行。
我想知道是否存在另一种解决方案,它会看到工作人员“消失”并将任务放回队列中?
【问题讨论】:
-
你是如何设置超时的?如果任务停止,它应该等待 88 分钟是没有意义的..
标签: redis celery django-celery