Source code for ievv_opensource.utils.ievvdevrun.config

import time

import sys
import signal


[docs]class RunnableThreadList(object): """ List of :class:`~ievv_opensource.utils.ievvdevrun.runnables.base.AbstractRunnableThread` objects. You use this with the :setting:`IEVVTASKS_DEVRUN_RUNNABLES` setting to define what to run with ``ievv devrun``. """ def __init__(self, *runnablethreads): """ Parameters: runnablethreads: :class:`~ievv_opensource.utils.ievvdevrun.runnables.base.AbstractRunnableThread` objects to add to the list. """ self._runnablethreads = [] for runnablethread in runnablethreads: self.append(runnablethread)
[docs] def append(self, runnablethread): """ Append a :class:`~ievv_opensource.utils.ievvdevrun.runnables.base.AbstractRunnableThread`. Parameters: runnablethread: A :class:`~ievv_opensource.utils.ievvdevrun.runnables.base.AbstractRunnableThread` object. """ self._runnablethreads.append(runnablethread)
[docs] def start(self): """ Start all the runnable threads and block until ``SIGTERM`` or ``KeyboardInterrupt``. """ def start_all(): for runnablethread in self._runnablethreads: runnablethread.start() def stop_all(): for runnablethread in reversed(self._runnablethreads): runnablethread.stop() def join_all(): for runnablethread in self._runnablethreads: runnablethread.join() def on_terminate(*args): print('') print('*' * 70) print('ievvdevrun terminated') print('*' * 70) stop_all() join_all() sys.exit(0) start_all() signal.signal(signal.SIGTERM, on_terminate) try: while True: time.sleep(1) except KeyboardInterrupt: stop_all() join_all()