class_docstr: Class to be used as a decorator to register all OutputDispatcher subclasses
docstr: Returns the subclass that should handle this particular service
  
  Args:
      service (str): The service identifier for this output
  
  Returns:
      OutputDispatcher: Subclass of OutputDispatcher to use for sending alerts
docstr_tok: ["Returns","the","subclass","that","should","handle","this","particular","service","Args",":","service","(","str",")",":","The","service","identifier","for","this","output","Returns",":","OutputDispatcher",":","Subclass","of","OutputDispatcher","to","use","for","sending","alerts"]
code: def get_dispatcher(cls, service):
      """Returns the subclass that should handle this particular service
  
      Args:
          service (str): The service identifier for this output
  
      Returns:
          OutputDispatcher: Subclass of OutputDispatcher to use for sending alerts
      """
      try:
          return cls._outputs[service]
      except KeyError:
          LOGGER.error(
              "Designated output service [%s] does not exist", service
          )
  
imports: from abc import ABCMeta, abstractmethod
  from collections import namedtuple
  import requests
  from requests.exceptions import Timeout
  import urllib3
  import backoff
  from streamalert.alert_processor.outputs.credentials.provider import OutputCredentialsProvider
  from streamalert.shared.backoff_handlers import backoff_handler, success_handler, giveup_handler
  from streamalert.shared.helpers.boto import REGION
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 3 for calling the StreamAlertOutput obj's underlying member method code with example usage: obj.get_dispatcher(cls, service) and returns: cls