'If no messages can be fetched, returns None.
If get_partition_info is None, it defaults to self.partition_info
If get_partition_info is True, returns (partition, message)
If get_partition_info is False, returns message'

def _get_message(self, block=True, timeout=0.1, get_partition_info=None, update_offset=True):

    start_at = time.time()
    while self.queue.empty():
        log.debug('internal    queue    empty,    fetching    more    messages')
        with FetchContext(self, block, timeout):
            self._fetch()
        if ((not block) or (time.time() > (start_at + timeout))):
            break
    try:
        (partition, message) = self.queue.get_nowait()
        if update_offset:
            self.offsets[partition] = (message.offset + 1)
            self.count_since_commit += 1
            self._auto_commit()
        if (get_partition_info is None):
            get_partition_info = self.partition_info
        if get_partition_info:
            return (partition, message)
        else:
            return message
    except queue.Empty:
        log.debug('internal    queue    empty    after    fetch    -    returning    None')
        return None
