123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- :orphan:
- .. _ext-processes:
- ===============================
- Running Custom Master Processes
- ===============================
- .. note::
- :ref:`Salt engines <engines>` are a new feature in 2015.8.0 that let you run
- custom processes on the Salt master and on Salt minions. Salt engines provide
- more functionality than ``ext_processes`` by accepting arguments, and by
- providing access to Salt config, execution modules, and runners.
- In addition to the processes that the Salt master automatically spawns,
- it is possible to configure it to start additional custom processes.
- This is useful if a dedicated process is needed that should run throughout
- the life of the Salt master. For periodic independent tasks, a
- :ref:`scheduled runner <scheduling-jobs>` may be more appropriate.
- Processes started in this way will be restarted if they die and will be
- killed when the Salt master is shut down.
- Example Configuration
- =====================
- Processes are declared in the master config file with the `ext_processes`
- option. Processes will be started in the order they are declared.
- .. code-block:: yaml
- ext_processes:
- - mymodule.TestProcess
- - mymodule.AnotherProcess
- Example Process Class
- =====================
- .. code-block:: python
- # Import python libs
- import time
- import logging
- from multiprocessing import Process
- # Import Salt libs
- from salt.utils.event import SaltEvent
- log = logging.getLogger(__name__)
- class TestProcess(Process):
- def __init__(self, opts):
- Process.__init__(self)
- self.opts = opts
- def run(self):
- self.event = SaltEvent("master", self.opts["sock_dir"])
- i = 0
- while True:
- self.event.fire_event({"iteration": i}, "ext_processes/test{0}")
- time.sleep(60)
|