如果任务未运行超过 10 分钟,如何重新安排任务?



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

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

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

我可以建议看一下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)

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

相关内容

  • 没有找到相关文章

最新更新