code: def LeaseClientActionRequests(self,
                                  client_id,
                                  lease_time=None,
                                  limit=sys.maxsize):
      
  
      leased_requests = []
  
      now = rdfvalue.RDFDatetime.Now()
      expiration_time = now + lease_time
      process_id_str = utils.ProcessIdString()
  
      leases = self.client_action_request_leases
      # Can't use an iterator here since the dict might change when requests get
      # deleted.
      for key, request in sorted(self.client_action_requests.items()):
        if key[0] != client_id:
          continue
  
        existing_lease = leases.get(key)
        if not existing_lease or existing_lease[0] < now:
          if existing_lease:
            lease_count = existing_lease[-1] + 1
            if lease_count > db.Database.CLIENT_MESSAGES_TTL:
              self._DeleteClientActionRequest(*key)
              continue
          else:
            lease_count = 1
  
          leases[key] = (expiration_time, process_id_str, lease_count)
          request.leased_until = expiration_time
          request.leased_by = process_id_str
          request.ttl = db.Database.CLIENT_MESSAGES_TTL - lease_count
          leased_requests.append(request)
          if len(leased_requests) >= limit:
            break
  
      return leased_requests
docs: Leases available client action requests for a client.