Components¶
-
class
hermes.components.Component(notification_pipe, error_strategy, error_queue, backoff_limit=16)¶ Bases:
hermes.log.LoggerMixin,multiprocessing.process.ProcessA class which can be used to create both listener and processor objects. Callers must implement
execute()and can others if they so choose.The structure of calls:
+-----------------+ | set_up | <--------------+ +-----------------+ | + | | | | | ERROR V | +-----------------------+ | | pre_execute | | | execute | +----------+ | post_execute | +-----------------------+ + | | V +-----------------------+ | tear_down | +-----------------------+The Component class adds a foundation for you to build a fully-fledged processor or listener. You can add/modify as much as you like - sensitive methods have been identified.
Parameters: - notification_pipe – The
Pipe-like object to performselect()on. - error_strategy – An object of type
AbstractErrorStrategyto handle exceptions. - error_queue – A
Queue-like object to inform theClientthrough. - backoff_limit – The maximum number of seconds to backoff a Component until it resets.
-
execute(pre_exec_value)¶ Must be overridden by callers. The return value will be passed to
post_execute()Parameters: pre_exec_value – The value returned by pre_execute()
-
ident¶ Returns: ident()unless the Component has not been started and returns None.
-
is_alive()¶ Returns: is_alive()unless the Component has not been started and returns False.
-
join(**kwargs)¶ Returns: join()unless the Component has not been started and returns immediately.
-
post_execute(exec_value)¶ Can be safely overridden by callers.
Parameters: exec_value – The value returned by execute()
-
run()¶ The main Component loop.
Callers should take great care when overriding.
-
set_up()¶ Called before execute methods and only once per iteration.
Overridden methods should call super.
-
start()¶ Initialises the process, sets it to daemonic and starts.
-
tear_down()¶ Called after execute methods and only once per iteration.
Can be used to tear down any resources.
- notification_pipe – The