Get a node off the inner priority queue. By default, this blocks.

        This takes the lock, but only for part of it.

        :param bool block: If True, block until the inner queue has data
        :param Optional[float] timeout: If set, block for timeout seconds
            waiting for data.
        :return ParsedNode: The node as present in the manifest.

        See `queue.PriorityQueue` for more information on `get()` behavior and
        exceptions.

def get(self, block=True, timeout=None):
        """Get a node off the inner priority queue. By default, this blocks.

        This takes the lock, but only for part of it.

        :param bool block: If True, block until the inner queue has data
        :param Optional[float] timeout: If set, block for timeout seconds
            waiting for data.
        :return ParsedNode: The node as present in the manifest.

        See `queue.PriorityQueue` for more information on `get()` behavior and
        exceptions.
        """
        _, node_id = self.inner.get(block=block, timeout=timeout)
        with self.lock:
            self._mark_in_progress(node_id)
        return self.get_node(node_id)