Load a work spec and some work units into the task list.
        
        update the work_spec and work_units.  Overwrites any existing
        work spec with the same ``work_spec['name']`` and similarly
        overwrites any WorkUnit with the same ``work_unit.key``

        :param dict work_spec: Work spec dictionary
        :param work_units: Keys are used as :attr:`WorkUnit.key`, values
          are used as :attr:`WorkUnit.data`
        :type work_units: dict of dict
        :param int nice: Niceness of `work_spec`, higher value is lower
          priority

def update_bundle(self, work_spec, work_units, nice=0):
        '''Load a work spec and some work units into the task list.
        
        update the work_spec and work_units.  Overwrites any existing
        work spec with the same ``work_spec['name']`` and similarly
        overwrites any WorkUnit with the same ``work_unit.key``

        :param dict work_spec: Work spec dictionary
        :param work_units: Keys are used as :attr:`WorkUnit.key`, values
          are used as :attr:`WorkUnit.data`
        :type work_units: dict of dict
        :param int nice: Niceness of `work_spec`, higher value is lower
          priority

        '''
        self.validate_work_spec(work_spec)
        
        work_spec_name = work_spec['name']
        with self.registry.lock(identifier=self.worker_id) as session:
            session.update(NICE_LEVELS, {work_spec_name: nice})
            session.update(WORK_SPECS,  {work_spec_name: work_spec})
            
            ## redis chokes on lua scripts with 
            work_units = work_units.items()
            window_size = 10**4
            for i in xrange(0, len(work_units), window_size):
                self.registry.re_acquire_lock()
                session.update(WORK_UNITS_ + work_spec_name, 
                               dict(work_units[i: i + window_size]))