Move failed work unit(s) back into the "pending" queue.

        The work unit will be available to execute immediately.  If
        other tasks had depended on it, those dependencies will not
        be recreated.

        :param str work_spec_name: name of the (existing) work spec
        :param str work_unit_names: name(s) of the (failed) work unit(s)
        :raise rejester.NoSuchWorkSpecError: if `work_spec_name` is
          invalid
        :raise rejester.NoSuchWorkUnitError: if `work_spec_name` is
          valid but any of the `work_unit_names` are not a failed work unit
        :raise rejester.LockError: if the registry lock could not be
          obtained

def retry(self, work_spec_name, *work_unit_names):
        '''Move failed work unit(s) back into the "pending" queue.

        The work unit will be available to execute immediately.  If
        other tasks had depended on it, those dependencies will not
        be recreated.

        :param str work_spec_name: name of the (existing) work spec
        :param str work_unit_names: name(s) of the (failed) work unit(s)
        :raise rejester.NoSuchWorkSpecError: if `work_spec_name` is
          invalid
        :raise rejester.NoSuchWorkUnitError: if `work_spec_name` is
          valid but any of the `work_unit_names` are not a failed work unit
        :raise rejester.LockError: if the registry lock could not be
          obtained
        
        '''
        with self.registry.lock(identifier=self.worker_id) as session:
            # This sequence is safe even if this system dies
            units = {}
            for work_unit_name in work_unit_names:
                unit = session.get(WORK_UNITS_ + work_spec_name + _FAILED,
                                   work_unit_name)
                if unit is None:
                    spec = session.get(WORK_SPECS, work_spec_name)
                    if spec is None:
                        raise NoSuchWorkSpecError(work_spec_name)
                    else:
                        raise NoSuchWorkUnitError(work_unit_name)
                if 'traceback' in unit:
                    del unit['traceback']
                units[work_unit_name] = unit
            session.move(WORK_UNITS_ + work_spec_name + _FAILED,
                         WORK_UNITS_ + work_spec_name,
                         units,
                         priority=0)