2016-10-10 13 views
0

例外が発生したときには、retryofficial doc)のタスクを実行します。セロリはretryself.retry(...)の形で使用します。Celery send_taskと例外時に再試行

私はクラスなしの関数を持っているので、私はどのようにユーザselfを使用するのか分かりません。

私のコードは、この

.. imports ... 
app = Celery('elasticcelery') 
@app.task(name='rm_doc') 
def rm_doc(schema_id, id): 
    es = Elasticsearch(es_ip) 
    try: 
     res = es.delete(schema_id, 'doc', id) 
    except NotFoundError as e: 
     <here goes the retry> 

あり、それはこのように他のサービスから呼び出されています:今

app_celery = Celery('celeryelastic') 
       app_celery.config_from_object('django.conf:settings') 
       app_celery.send_task('rm_doc', kwargs={"schema_id": schema_id, "id": document_id},) 

、私はself.retryを追加する必要がありますが、私の方法にはselfはありません。

どうすればよいですか?

PS:私はパルメーターとしてselfを追加しようとしましたが、タスクがリモートから初めて呼び出されたときにマッピングがないので、これは失敗します。

答えて

0

bind=Trueの注釈には、selfを追加できます。

関連する問題