2011-07-04 21 views
0

httpコールバックタスク - http://celeryproject.org/docs/userguide/remote-tasks.htmlをセロリで見ています。リモートエンドポイントが利用可能な場合は十分に機能しますが、使用できない場合はリトライポリシーを使用して再試行したい場合や、リモートエンドポイントがエラーを返す場合でも機能します。現時点ではエラーと思われ、タスクは無視されます。セロリで再試行するコールバックのタスク

アイデア?

答えて

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分ごとに1回にそれをしようとし続けます。

+0

私は誤解を招く可能性がありますが、エンドポイントが存在しないときにget_asyncがエラーを返さなかったので、再試行をトリガーしませんでしたか? (私はたぶん間違っていますが、物事が走る場所の周りに頭を抱えています)。だからこれを使用する - 私は( "クライアント")の呼び出しRemoteCall()。遅延()? –

関連する問題