code: def lease(self, time_to_live, lease_id=None, timeout=None):
          
          assembler = commons.LeaseRequestAssembler(self._url, time_to_live, lease_id)
  
          obj = yield self._post(assembler.url, assembler.data, timeout)
  
          lease = Lease._parse(self, obj)
  
          returnValue(lease)
docs: Creates a lease which expires if the server does not
          receive a keep alive within a given time to live period.
  
          All keys attached to the lease will be expired and deleted if
          the lease expires.
  
          Each expired key generates a delete event in the event history.
  
          :param time_to_live: TTL is the advisory time-to-live in seconds.
          :type time_to_live: int
  
          :param lease_id: ID is the requested ID for the lease.
              If ID is None, the lessor (etcd) chooses an ID.
          :type lease_id: int or None
  
          :param timeout: Request timeout in seconds.
          :type timeout: int
  
          :returns: A lease object representing the created lease. This
              can be used for refreshing or revoking the least etc.
          :rtype: instance of :class:`txaioetcd.Lease`