docs: def heartbeat(self):
          '''Renew the heartbeat, if possible, and optionally update the job's
          user data.'''
          logger.debug('Heartbeating %s (ttl = %s)', self.jid, self.ttl)
          try:
              self.expires_at = float(self.client('heartbeat', self.jid,
              self.client.worker_name, json.dumps(self.data)) or 0)
          except QlessException:
              raise LostLockException(self.jid)
          logger.debug('Heartbeated %s (ttl = %s)', self.jid, self.ttl)
          return self.expires_at