Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果任务尚未完成,如何重新安排任务';我跑了10分钟多了?_Python_Django_Celery_Django Celery - Fatal编程技术网

Python 如果任务尚未完成,如何重新安排任务';我跑了10分钟多了?

Python 如果任务尚未完成,如何重新安排任务';我跑了10分钟多了?,python,django,celery,django-celery,Python,Django,Celery,Django Celery,我有一个task:recursive_task,它将安排相同的任务在5秒后执行,但如果由于某种原因此任务崩溃,则需要重新运行。 我几乎抓住了每一个场景,但你永远不知道未来会发生什么 我首先做了一个重复的任务:manage_tasks,它检查递归_任务的状态,并检查它是否长时间没有运行以及是否成功完成,但这感觉不对。那么您将如何解决这个问题呢?我建议您看看python信号: 其中: def handler(signum, frame): # do something sys.ex

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


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

我建议您看看python信号:

其中:

def handler(signum, frame):
    # do something
    sys.exit(1)

通过信号,您可以设置处理程序在任何时间后执行,您需要。然后,通过处理程序直接重新运行脚本。

我建议您看看python信号:

其中:

def handler(signum, frame):
    # do something
    sys.exit(1)

通过信号,您可以设置处理程序在任何时间后执行,您需要。然后通过处理程序直接重新运行脚本。

尝试acks\u late设置,它将在任务执行后确认任务消息。使用此选项,您可以更轻松地重新运行任务。

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

不是我,但我看了一下您的答案,发现了它;这不是我回答这个问题所需要的。最后,我用以下方法解决了这个问题:在任务开始时,向缓存中添加一个字符串“running”,过期时间为5分钟,我有一个cron作业,它每小时检查一次缓存中是否有任务每次启动时都放在那里的项,因此如果它没有启动超过5分钟,那么缓存中就没有任何项了,我们又开始了这项任务。不是我,但我看了你的答案,发现了;这不是我回答这个问题所需要的。最后,我用以下方法解决了这个问题:在任务开始时,向缓存中添加一个字符串“running”,过期时间为5分钟,我有一个cron作业,它每小时检查一次缓存中是否有任务每次启动时都放在那里的项,因此如果它没有启动超过5分钟,那么缓存中就没有任何项了,我们再次开始这项任务。