docs: def retry(self):
          """ Restarts failed tasks of a job. """
  
          logger.info('Job {0} retrying all failed tasks'.format(self.name))
          self.initialize_snapshot()
  
          failed_task_names = []
          for task_name, log in self.run_log['tasks'].items():
              if log.get('success', True) == False:
                  failed_task_names.append(task_name)
  
          if len(failed_task_names) == 0:
              raise DagobahError('no failed tasks to retry')
  
          self._set_status('running')
          self.run_log['last_retry_time'] = datetime.utcnow()
  
          logger.debug('Job {0} seeding run logs'.format(self.name))
          for task_name in failed_task_names:
              self._put_task_in_run_log(task_name)
              self.tasks[task_name].start()
  
          self._commit_run_log()