code: def renew(self, requested_timeout=None):
          
          # NB This code is sometimes called from a separate thread (when
          # subscriptions are auto-renewed. Be careful to ensure thread-safety
  
          if self._has_been_unsubscribed:
              raise SoCoException(
                  'Cannot renew subscription once unsubscribed')
          if not self.is_subscribed:
              raise SoCoException(
                  'Cannot renew subscription before subscribing')
          if self.time_left == 0:
              raise SoCoException(
                  'Cannot renew subscription after expiry')
  
          # SUBSCRIBE publisher path HTTP/1.1
          # HOST: publisher host:publisher port
          # SID: uuid:subscription UUID
          # TIMEOUT: Second-requested subscription duration (optional)
          headers = {
              'SID': self.sid
          }
          if requested_timeout is None:
              requested_timeout = self.requested_timeout
          if requested_timeout is not None:
              headers["TIMEOUT"] = "Second-{}".format(requested_timeout)
          response = requests.request(
              'SUBSCRIBE',
              self.service.base_url + self.service.event_subscription_url,
              headers=headers)
          response.raise_for_status()
          timeout = response.headers['timeout']
          # According to the spec, timeout can be "infinite" or "second-123"
          # where 123 is a number of seconds.  Sonos uses "Second-123" (with a
          # a capital letter)
          if timeout.lower() == 'infinite':
              self.timeout = None
          else:
              self.timeout = int(timeout.lstrip('Second-'))
          self._timestamp = time.time()
          self.is_subscribed = True
          log.info(
              "Renewed subscription to %s, sid: %s",
              self.service.base_url + self.service.event_subscription_url,
              self.sid)
docs: Renew the event subscription.
  
          You should not try to renew a subscription which has been
          unsubscribed, or once it has expired.
  
          Args:
              requested_timeout (int, optional): The period for which a renewal
                  request should be made. If None (the default), use the timeout
                  requested on subscription.