我正在使用 djkombu 传输进行本地开发,但我可能会在生产中使用 amqp(兔子)。

我希望能够迭代特定类型的失败并重新提交。这可能是在服务器出现故障或由数据的某些新变化触发的某些边缘情况错误的情况下。

因此,在修复某些错误或备份第三方站点后,我最多可以在 12 小时后重新提交作业。

我的问题是:有没有办法通过结果后端访问旧的失败作业并简单地使用相同的参数等重新提交它们?

最佳答案

您可能可以使用以下方法访问旧作业:

CELERY_RESULT_BACKEND = "database"

并在您的代码中:
from djcelery.models import TaskMeta
task = TaskMeta.objects.filter(task_id='af3185c9-4174-4bca-0101-860ce6621234')[0]

但我不确定你能找到任务开始时使用的参数......也许是 TaskState ......

我从来没有这样用过。但您可能想考虑 task.retry 功能?
celery 文档中的一个例子:
@task()
def task(*args):
    try:
        some_work()
    except SomeException, exc:
        # Retry in 24 hours.
        raise task.retry(*args, countdown=60 * 60 * 24, exc=exc)

关于django - Celery 存储不可恢复的任务失败以供以后重新提交,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11600792/

10-11 20:43