Put a job back on the queue to be processed (indicating that you've aborted it)

        You can only release a job which you have reserved using :func:`reserve_job()` or :func:`reserve_iter()`.

        :param job_id: Job ID to return
        :param pri: New priority (if not passed, will use old priority)
        :type pri: int
        :param delay: New delay for job (if not passed, will use 0)
        :type delay: int

def release_job(self, job_id, pri=65536, delay=0):
        """Put a job back on the queue to be processed (indicating that you've aborted it)

        You can only release a job which you have reserved using :func:`reserve_job()` or :func:`reserve_iter()`.

        :param job_id: Job ID to return
        :param pri: New priority (if not passed, will use old priority)
        :type pri: int
        :param delay: New delay for job (if not passed, will use 0)
        :type delay: int
        """
        if hasattr(job_id, 'job_id'):
            job_id = job_id.job_id
        with self._sock_ctx() as socket:
            self._send_message('release {0} {1} {2}\r\n'.format(job_id, pri, delay), socket)
            return self._receive_word(socket, b'RELEASED', b'BURIED')