在芹菜任务倒计时之前重试



我们正在运行 Django v1.10 和 celery v4.0.2、rabbitMQ v3.5.7 和 flower v0.9.1,并且对芹菜、兔子MQ 和花卉非常新。

有一个函数 x(( 设置为在失败的情况下在 7 天后重试。我们有 1000 个 x 实例在生产环境中重新排队。我们已经解决了这个问题,并希望尽快重试实例。

有没有办法在计划时间之前强制重试?

如果您可以获得任务列表,则只需在每个任务上调用task.retry(exc=exc)即可。请参阅文档。

尝试celery.task.control.inspect().reserved(),看看是否可以以这种方式过滤任务。这里的例子。

根据此答案,您可以从其 id 中获取任务对象。

result = MyTask.AsyncResult(task_id)
result.get()

因此,在尝试了很多事情之后,我必须通过获取计划任务及其参数的列表并使用参数在 for 循环中调用函数来解决它。

显然,无法通过设计手动重试任务。您必须使用相同的参数创建另一个任务。这是我最终做到的:

i = inspect()
scheduled = i.scheduled()
for key in scheduled:
for element in scheduled[key]:
reqDict = element['request']
if reqDict['type']=='module.function':
module.function.delay(converted_arguments)
revoke(reqDict['id'], terminate=True)

相关内容

  • 没有找到相关文章

最新更新