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