Celery send_task 并重试异常
Celery send_task and retry on exception
我想 retry
(official doc) 任务引发异常时。 Celery 允许使用 self.retry(...)
形式的 retry
现在,我不知道如何使用 self
,因为我有一个没有任何 class 的函数。
我的代码是这样的
.. 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
作为参数,但这失败了,因为第一次从远程调用任务时没有映射。
我在方法的注释中忘记了bind=True
,现在我可以添加self
。
我想 retry
(official doc) 任务引发异常时。 Celery 允许使用 self.retry(...)
retry
现在,我不知道如何使用 self
,因为我有一个没有任何 class 的函数。
我的代码是这样的
.. 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
作为参数,但这失败了,因为第一次从远程调用任务时没有映射。
我在方法的注释中忘记了bind=True
,现在我可以添加self
。