code: def fetch(self):
          
          kwargs = self.build_kwargs()
          data = self.connection.call('batch_get_item', **kwargs)
          if 'UnprocessedKeys' in data:
              for items in six.itervalues(data['UnprocessedKeys']):
                  self.keys.extend(items['Keys'])
              # Getting UnprocessedKeys indicates that we are exceeding our
              # throughput. So sleep for a bit.
              self._attempt += 1
              self.connection.exponential_sleep(self._attempt)
          else:
              # No UnprocessedKeys means our request rate is fine, so we can
              # reset the attempt number.
              self._attempt = 0
          self._update_capacity(data)
          if 'consumed_capacity' in data:
              # Comes back as a list from BatchWriteItem
              self.consumed_capacity = \
                  sum(data['consumed_capacity'], self.consumed_capacity)
          return iter(data['Responses'][self.tablename])
docs: Fetch a set of items from their keys