class_docstr: Interface for FiftyOne services.
  
  All services must define a ``command`` property.
  
  Services are run in an isolated Python subprocess (see ``service/main.py``)
  to ensure that they are shut down when the main Python process exits. The
  ``command`` and ``working_dir`` properties control the execution of the
  service in the subprocess.
class_docstr_tok: ["Interface","for","FiftyOne","services",".","All","services","must","define","a","``","command","``","property",".","Services","are","run","in","an","isolated","Python","subprocess","(","see","``","service\/main.py","``",")","to","ensure","that","they","are","shut","down","when","the","main","Python","process","exits",".","The","``","command","``","and","``","working_dir","``","properties","control","the","execution","of","the","service","in","the","subprocess","."]
code: def __init__(self):
      self._system = os.system
      self._disabled = os.environ.get(
          "FIFTYONE_DISABLE_SERVICES", False
      ) or (
          os.environ.get("FIFTYONE_HEADLESS", False)
          and not self.allow_headless
      )
      self.child = None
      if not self._disabled:
          self.start()
  
imports: import logging
  import os
  import subprocess
  import sys
  import psutil
  import requests
  from retrying import retry
  import eta.core.utils
  import fiftyone.constants
  import fiftyone.core.config
  import fiftyone.core.context
  import fiftyone.service.util
label_desc: Use image node_id 1 to create a new Service object from inherited base classes: object with example: obj = Service()