【问题标题】:Celery send_task and retry on exceptionCelery send_task 并重试异常
【发布时间】:2016-10-10 13:45:09
【问题描述】:

当它引发异常时,我想 retry (official doc) 一个任务。 Celery 通过使用retryself.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


    【解决方案1】:

    我忘记了方法注解中的bind=True,现在我可以添加self

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2017-03-12
      • 2011-10-13
      • 2016-12-17
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 2013-10-04
      相关资源
      最近更新 更多