code: def set_timeout(self, timeout):
          
          loop = asyncio.get_event_loop()
  
          if isinstance(timeout, timedelta):
              timeout = timeout.total_seconds()
  
          loop.call_later(timeout, self.close)
docs: Automatically close the tracker after `timeout` has elapsed.
  
          :param timeout: The timeout after which the tracker is closed
                          automatically.
          :type timeout: :class:`numbers.Real` or :class:`datetime.timedelta`
  
          If the `timeout` is not a :class:`datetime.timedelta` instance, it is
          assumed to be given as seconds.
  
          The timeout cannot be cancelled after it has been set. It starts at the
          very moment :meth:`set_timeout` is called.