'dispatch task to fetcher
out queue may have size limit to prevent block, a send_buffer is used'

def send_task(self, task, force=True):

    try:
        self.out_queue.put_nowait(task)
    except Queue.Full:
        if force:
            self._send_buffer.appendleft(task)
        else:
            raise
