示例#1
0
 def reschedule(self, type, err, traceback):
     '''
     Set a new time to run the task in future, or create a CompletedTask and delete the Task
     if it has reached the maximum of allowed attempts
     '''
     self.last_error = self._extract_error(type, err, traceback)
     self.increment_attempts()
     if self.has_reached_max_attempts() or isinstance(
             err, InvalidTaskError):
         self.failed_at = timezone.now()
         logger.warning('Marking task %s as failed', self)
         completed = self.create_completed_task()
         task_failed.send(sender=self.__class__,
                          task_id=self.id,
                          completed_task=completed)
         self.delete()
     else:
         backoff = timedelta(seconds=(self.attempts**4) + 5)
         self.run_at = timezone.now() + backoff
         logger.warning('Rescheduling task %s for %s later at %s', self,
                        backoff, self.run_at)
         task_rescheduled.send(sender=self.__class__, task=self)
         self.locked_by = None
         self.locked_at = None
         self.save()
 def reschedule(self, type, err, traceback):
     '''
     Set a new time to run the task in future, or create a CompletedTask and delete the Task
     if it has reached the maximum of allowed attempts
     '''
     self.last_error = self._extract_error(type, err, traceback)
     self.increment_attempts()
     if self.has_reached_max_attempts():
         self.failed_at = timezone.now()
         logging.warn('Marking task %s as failed', self)
         completed = self.create_completed_task()
         task_failed.send(sender=self.__class__, task_id=self.id, completed_task=completed)
         self.delete()
     else:
         backoff = timedelta(seconds=(self.attempts ** 4) + 5)
         self.run_at = timezone.now() + backoff
         logging.warn('Rescheduling task %s for %s later at %s', self,
             backoff, self.run_at)
         task_rescheduled.send(sender=self.__class__, task=self)
         self.locked_by = None
         self.locked_at = None
         self.save()