diff options
| author | Barry Warsaw | 2009-05-11 22:08:07 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2009-05-11 22:08:07 -0400 |
| commit | 65de4becab9d8b02bef6ba20a2f17977be986227 (patch) | |
| tree | f0543ce0f585c733f153bc210c3dc68a08ae52dc /src | |
| parent | e230b909d444f0fa9ed3d4f847deeb6be0808336 (diff) | |
| download | mailman-65de4becab9d8b02bef6ba20a2f17977be986227.tar.gz mailman-65de4becab9d8b02bef6ba20a2f17977be986227.tar.zst mailman-65de4becab9d8b02bef6ba20a2f17977be986227.zip | |
Diffstat (limited to 'src')
| -rw-r--r-- | src/mailman/bin/qrunner.py | 6 | ||||
| -rw-r--r-- | src/mailman/interfaces/runner.py | 8 | ||||
| -rw-r--r-- | src/mailman/queue/__init__.py | 2 | ||||
| -rw-r--r-- | src/mailman/queue/rest.py | 2 |
4 files changed, 16 insertions, 2 deletions
diff --git a/src/mailman/bin/qrunner.py b/src/mailman/bin/qrunner.py index b6891c7f6..9c02a5c4d 100644 --- a/src/mailman/bin/qrunner.py +++ b/src/mailman/bin/qrunner.py @@ -226,7 +226,8 @@ def main(): def stop(self): self._qrunner.stop() loop = Loop(qrunner) - set_signals(loop) + if qrunner.intercept_signals: + set_signals(loop) # Now start up the main loop log = logging.getLogger('mailman.qrunner') log.info('%s qrunner started.', loop.name()) @@ -250,7 +251,8 @@ def main(): def isdone(self): return self._isdone loop = Loop() - set_signals(loop) + if qrunner.intercept_signals: + set_signals(loop) log.info('Main qrunner loop started.') while not loop.isdone(): for qrunner in qrunners: diff --git a/src/mailman/interfaces/runner.py b/src/mailman/interfaces/runner.py index e923e099b..4fe8ae0a3 100644 --- a/src/mailman/interfaces/runner.py +++ b/src/mailman/interfaces/runner.py @@ -47,6 +47,14 @@ class IRunner(Interface): `config.QRUNNER_SLEEP_TIME` """) + intercept_signals = Attribute("""\ + Should the qrunner mechanism intercept signals? + + In general, the qrunner catches SIGINT, SIGTERM, SIGUSR1, and SIGHUP + to manage the process. Some qrunners need to manage their own + signals, and set this attribute to False. + """) + def _one_iteration(): """The work done in one iteration of the main loop. diff --git a/src/mailman/queue/__init__.py b/src/mailman/queue/__init__.py index b7c6eb1a5..ae3666643 100644 --- a/src/mailman/queue/__init__.py +++ b/src/mailman/queue/__init__.py @@ -281,6 +281,8 @@ class Switchboard: class Runner: implements(IRunner) + intercept_signals = True + def __init__(self, name, slice=None): """Create a queue runner. diff --git a/src/mailman/queue/rest.py b/src/mailman/queue/rest.py index 148622d2b..02d110910 100644 --- a/src/mailman/queue/rest.py +++ b/src/mailman/queue/rest.py @@ -40,6 +40,8 @@ log = logging.getLogger('mailman.http') class RESTRunner(Runner): + intercept_signals = False + def run(self): log.info('Starting REST server') try: |
