docs: def _process_mor_objects_queue(self, instance):
          """
          Pops `batch_morlist_size` items from the mor objects queue and run asynchronously
          the _process_mor_objects_queue_async method to fill the Mor cache.
          """
          i_key = self._instance_key(instance)
          self.mor_cache.init_instance(i_key)
  
          if not self.mor_objects_queue.contains(i_key):
              self.log.debug("Objects queue is not initialized yet for instance {}, skipping processing".format(i_key))
              return
  
          for resource_type in RESOURCE_TYPE_METRICS:
              # Batch size can prevent querying large payloads at once if the environment is too large
              # If batch size is set to 0, process everything at once
              batch_size = self.batch_morlist_size or self.mor_objects_queue.size(i_key, resource_type)
              while self.mor_objects_queue.size(i_key, resource_type):
                  mors = []
                  for _ in range(batch_size):
                      mor = self.mor_objects_queue.pop(i_key, resource_type)
                      if mor is None:
                          self.log.debug(
                              "No more objects of type '{}' left in the queue".format(ensure_unicode(resource_type))
                          )
                          break
  
                      mor_name = str(mor['mor'])
                      mor['interval'] = REAL_TIME_INTERVAL if mor['mor_type'] in REALTIME_RESOURCES else None
                      # Always update the cache to account for Mors that might have changed parent
                      # in the meantime (e.g. a migrated VM).
                      self.mor_cache.set_mor(i_key, mor_name, mor)
  
                      # Only do this for non real-time resources i.e. datacenter, datastore and cluster
                      # For hosts and VMs, we can rely on a precomputed list of metrics
                      realtime_only = is_affirmative(instance.get("collect_realtime_only", True))
                      if mor["mor_type"] not in REALTIME_RESOURCES and not realtime_only:
                          mors.append(mor)
  
                  # We will actually schedule jobs for non realtime resources only.
                  if mors:
                      self.pool.apply_async(self._process_mor_objects_queue_async, args=(instance, mors))