1

我有 task:recursive_task 它将安排相同的任务在 5 秒后执行,但如果由于某种原因该任务崩溃,则需要再次重新运行。我几乎抓住了每一个场景,但你永远不知道未来会发生什么。

我首先做了一个重复的任务:manage_tasks,它检查recursive_task的状态,会检查它是否长时间没有运行,是否成功完成,但这感觉不对。那么你将如何解决这个问题呢?

4

2 回答 2

1

尝试 acks_late 设置CELERY_ACKS_LATE,它将在任务执行后确认任务消息。有了这个,您可以更轻松地重新运行您的任务。

于 2011-10-18T13:18:58.587 回答
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)

使用信号,您可以根据需要将处理程序设置为在任何时间后执行。然后这是通过处理程序重新运行脚本的直接方法。

于 2011-10-18T12:54:53.103 回答