|
@@ -322,7 +322,12 @@ class Worker(object):
|
|
|
# only install HUP handler if detached from terminal,
|
|
|
# so closing the terminal window doesn't restart celeryd
|
|
|
# into the background.
|
|
|
- install_worker_restart_handler(worker)
|
|
|
+ if IS_OSX:
|
|
|
+ # OS X can't exec from a process using threads.
|
|
|
+ # See http://github.com/ask/celery/issues#issue/152
|
|
|
+ install_HUP_not_supported_handler(worker)
|
|
|
+ else:
|
|
|
+ install_worker_restart_handler(worker)
|
|
|
install_worker_term_handler(worker)
|
|
|
install_worker_int_handler(worker)
|
|
|
signals.worker_init.send(sender=worker)
|
|
@@ -387,6 +392,15 @@ def install_worker_restart_handler(worker):
|
|
|
platform.install_signal_handler("SIGHUP", restart_worker_sig_handler)
|
|
|
|
|
|
|
|
|
+def install_HUP_not_supported_handler(worker):
|
|
|
+
|
|
|
+ def warn_on_HUP_handler(signum, frame):
|
|
|
+ worker.logger.error("SIGHUP not supported: "
|
|
|
+ "Restarting with HUP is unstable on this platform!")
|
|
|
+
|
|
|
+ platform.install_signal_handler("SIGHUP", warn_on_HUP_handler)
|
|
|
+
|
|
|
+
|
|
|
def parse_options(arguments):
|
|
|
"""Parse the available options to ``celeryd``."""
|
|
|
parser = optparse.OptionParser(option_list=OPTION_LIST)
|