使用Celery重试HTTP回调任务

0 投票
1 回答
953 浏览
提问于 2025-04-16 20:46

我在查看Celery中的HTTP回调任务,具体内容可以参考这个链接 - http://celeryproject.org/docs/userguide/remote-tasks.html。这些任务在远程服务可用的时候运行得很好,但如果远程服务不可用,我希望它能根据重试策略进行重试。即使远程服务返回了失败的结果,目前看起来也只是报错,任务就被忽略了。

有没有什么好的建议?

1 个回答

1

你可以这样定义你的任务:

class RemoteCall(Task):
    default_retry_delay = 30 * 60 # retry in 30 minutes

    def Run(self, arg, **kwargs):
        try:
            res = URL("http://example.com/").get_async(arg)
        except (InvalidResponseError, RemoteExecuteError), exc:
            self.retry([arg], exc=exc, *kwargs)

这样的话,它会在最多尝试的次数内,不断尝试,每次间隔30分钟。

撰写回答