2016-10-10 3 views
0

예외가 발생하면 retry (official doc) 작업을 원합니다. 셀러리는 self.retry(...)Celery send_task 및 예외시 재시도

형태로 retry을 사용하여 이것을 허용합니다. 이제 사용자가 어떤 종류의 함수도 가지고 있지 않기 때문에 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가 없습니다.

어떻게해야합니까?

추신 : 나는 파머로 self을 추가하려고 시도했지만, 리모컨에서 작업을 처음 호출 할 때 매핑이 없으므로 실패합니다.

답변

0

bind=True을 주석 달기 방법에서 주석을 달았습니다. 이제 self을 추가 할 수 있습니다.

관련 문제