FrontPage

tips

retry

タスクが失敗した場合にリトライするときは retry() を使用する。

同じタスク関数を実行する他、celery.task.current を使うことも出来るっぽい(違いは未調査)。 タスクのリトライ回数はtaskデコレータのmax_retries引数か、retry()で定義できる。

@task(max_retries=3)
def some_task():
    try:
        result = urllib.urlopen("http://example.com")
    except IOError as e:  # 名前が解決できないとか接続できないとか
        try:
            # 同じタスクをリトライする
            some_task.retry()
        except some_task.MaxRetriesExceededError as e:
            raise e

リトライ回数上限を超えた場合にオリジナルの例外を送出したい場合にはexc引数に例外を渡す。

try:
    # some task process
except Exception as e:
    some_task.retry(exc=e)
    # →捉えされた例外がceleryに渡される

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-14 (月) 17:43:54 (1378d)