docs: def _process_event(self, data, url, services_incl_filter=None, services_excl_filter=None, custom_tags=None):
          '''
          Main event processing loop. An event will be created for a service
          status change.
          Service checks on the server side can be used to provide the same functionality
          '''
          hostname = data['svname']
          service_name = data['pxname']
          key = "%s:%s" % (hostname, service_name)
          status = self.host_status[url][key]
          custom_tags = [] if custom_tags is None else custom_tags
  
          if self._is_service_excl_filtered(service_name, services_incl_filter, services_excl_filter):
              return
  
          data_status = data['status']
          if status is None:
              self.host_status[url][key] = data_status
              return
  
          if status != data_status and data_status in ('up', 'down'):
              # If the status of a host has changed, we trigger an event
              try:
                  lastchg = int(data['lastchg'])
              except Exception:
                  lastchg = 0
  
              # Create the event object
              ev = self._create_event(
                  data_status, hostname, lastchg, service_name, data['back_or_front'], custom_tags=custom_tags
              )
              self.event(ev)
  
              # Store this host status so we can check against it later
              self.host_status[url][key] = data_status