'Put an item into the requeue.
Args:
item: An item to add to the requeue.
block: Whether to block if the requeue is full.
timeout: Maximum on how long to wait until the queue is non-full.
Raises:
Queue.Full if the queue is full and the timeout expires.'

def put(self, item, block=True, timeout=None):

    def PutAction():
        self.queue.put(item, block=False)
    self._DoWithTimeout(PutAction, Queue.Full, self.get_cond, self.put_cond, self.lock, timeout=timeout, block=block)
