【问题标题】:Retry with celery Http Callback Tasks使用 celery Http 回调任务重试
【发布时间】:2011-09-27 22:19:38
【问题描述】:

我正在查看 celery 中的 http 回调任务 - http://celeryproject.org/docs/userguide/remote-tasks.html。当远程端点可用时,它们工作得很好——但是当它不可用时,我希望它重试(根据重试策略)——或者即使远程端点返回失败。目前它似乎是一个错误,任务被忽略了。

有什么想法吗?

【问题讨论】:

    标签: python django celery


    【解决方案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)
    

    这将继续尝试最多 max_retries 次,每 30 分钟一次。

    【讨论】:

    • 我可能弄错了 - 但是当端点不存在时 get_async 没有返回错误 - 所以它不会触发重试? (我可能弄错了,我仍然在思考事情的发展方向)。所以要使用这个 - 我会(在“客户端”上)调用 RemoteCall().delay() ?
    猜你喜欢
    • 2012-04-01
    • 2011-06-19
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多