我有任务:recursive_task将安排在5秒后执行相同的任务,但如果由于某种原因此任务崩溃,则需要再次重新运行。 我几乎抓住了所有场景,但你永远不知道将来会发生什么。
我首先做了一个重复的任务:manage_tasks检查recursive_task的状态,并检查它是否长时间没有运行,是否成功完成,但这感觉不对。那你怎么解决这个问题呢?
答案 0 :(得分:1)
尝试acks_late设置CELERY_ACKS_LATE,它将在执行任务后确认任务消息。通过这种方式,您可以更轻松地重新运行任务。
答案 1 :(得分:0)
我建议你看看python信号:
http://docs.python.org/library/signal.html
import signal
# Set the signal handler and an alarm
signal.signal(signal.SIGALRM, handler)
signal.alarm(900) # 15 miutes
# some_function()
signal.alarm(0) # Disable the alarm
其中:
def handler(signum, frame):
# do something
sys.exit(1)
使用信号,您可以设置在任何时间之后执行的处理程序。然后,这是通过处理程序重新运行脚本的直接方式。