【问题标题】:How to execute some code at last retry of a Celery task如何在 Celery 任务的最后重试时执行一些代码
【发布时间】:2021-06-14 09:42:20
【问题描述】:

我正在使用 Django 和 Celery 来运行我的后台任务。我有一个任务可能由于某些 IO 原因而失败:

@shared_task(bind=True)
def mytask(self, someargs):
  try:
    do_some_io_operation()
  except SomeException as e:
    self.retry(max_retries=5)

  # do some other stuff

我想在最后一次重试失败时执行一些代码并退出函数而不引发异常。 有可能吗?

【问题讨论】:

    标签: django celery background-task


    【解决方案1】:

    其实我在another ticket找到了答案:

    @shared_task(bind=True)
    def mytask(self, someargs):
      max_retries = 5
      try:
        do_some_io_operation()
      except SomeException as e:
    
        if (self.request.retries >= max_retries):
          # do some stuff
          return
    
        self.retry(max_retries=max_retries)
    
      # do some other stuff
    

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2019-04-20
      • 2017-04-14
      • 2012-12-12
      • 2019-02-22
      • 2015-10-22
      相关资源
      最近更新 更多