使用Celery重试HTTP回调任务
我在查看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分钟。