Reserve a job for this connection. Blocks for TIMEOUT secionds and raises TIMED_OUT if no job was available

        :param timeout: Time to wait for a job, in seconds.
        :type timeout: int

def reserve_job(self, timeout=5):
        """Reserve a job for this connection. Blocks for TIMEOUT secionds and raises TIMED_OUT if no job was available

        :param timeout: Time to wait for a job, in seconds.
        :type timeout: int
        """
        timeout = int(timeout)
        if self.socket_timeout is not None:
            if timeout >= self.socket_timeout:
                raise ValueError('reserve_job timeout must be < socket timeout')
        if not self._watchlist:
            raise ValueError('Select a tube or two before reserving a job')
        with self._sock_ctx() as socket:
            self._send_message('reserve-with-timeout {0}'.format(timeout), socket)
            job_id, job_data = self._receive_id_and_data_with_prefix(b'RESERVED', socket)
            return Job(job_id, job_data)