|
@@ -216,6 +216,7 @@ class Worker(object):
|
|
# Install signal handler so SIGHUP restarts the worker.
|
|
# Install signal handler so SIGHUP restarts the worker.
|
|
install_worker_restart_handler(worker)
|
|
install_worker_restart_handler(worker)
|
|
install_worker_term_handler(worker)
|
|
install_worker_term_handler(worker)
|
|
|
|
+ install_worker_int_handler(worker)
|
|
|
|
|
|
signals.worker_init.send(sender=worker)
|
|
signals.worker_init.send(sender=worker)
|
|
try:
|
|
try:
|
|
@@ -226,6 +227,17 @@ class Worker(object):
|
|
exc.__class__, exc, traceback.format_exc()))
|
|
exc.__class__, exc, traceback.format_exc()))
|
|
|
|
|
|
|
|
|
|
|
|
+def install_worker_int_handler(worker):
|
|
|
|
+
|
|
|
|
+ def _stop(signum, frame):
|
|
|
|
+ if multiprocessing.current_process().name == 'MainProcess':
|
|
|
|
+ worker.logger.warn("celeryd: Cold shutdown (%s)" % \
|
|
|
|
+ (current_process().name))
|
|
|
|
+ worker.terminate()
|
|
|
|
+ raise SystemExit()
|
|
|
|
+
|
|
|
|
+ platform.install_signal_handler("SIGINT", _stop)
|
|
|
|
+
|
|
def install_worker_term_handler(worker):
|
|
def install_worker_term_handler(worker):
|
|
|
|
|
|
def _stop(signum, frame):
|
|
def _stop(signum, frame):
|