【发布时间】:2016-10-10 13:45:09
【问题描述】:
当它引发异常时,我想 retry (official doc) 一个任务。 Celery 通过使用retry 以self.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。
我应该如何进行?
PS:我尝试将self 添加为参数,但这失败了,因为第一次从远程调用任务时没有映射。
【问题讨论】:
标签: celery django-celery celery-task