Browse Source

[Programs][worker] --detach would create extraenous logfile with literal %I in the filename. Closes #3096

Ask Solem 9 years ago
parent
commit
d6a0c57ce3
1 changed files with 8 additions and 2 deletions
  1. 8 2
      celery/bin/celeryd_detach.py

+ 8 - 2
celery/bin/celeryd_detach.py

@@ -19,6 +19,7 @@ import sys
 from optparse import OptionParser, BadOptionError
 
 from celery.platforms import EX_FAILURE, detached
+from celery.utils import default_nodename, node_format
 from celery.utils.log import get_logger
 
 from celery.bin.base import daemon_options, Option
@@ -31,6 +32,7 @@ C_FAKEFORK = os.environ.get('C_FAKEFORK')
 
 OPTION_LIST = daemon_options(default_pidfile='celeryd.pid') + (
     Option('--workdir', default=None, dest='working_directory'),
+    Option('-n', '--hostname'),
     Option('--fake',
            default=False, action='store_true', dest='fake',
            help="Don't fork (for debugging purposes)"),
@@ -39,7 +41,10 @@ OPTION_LIST = daemon_options(default_pidfile='celeryd.pid') + (
 
 def detach(path, argv, logfile=None, pidfile=None, uid=None,
            gid=None, umask=None, working_directory=None, fake=False, app=None,
-           executable=None):
+           executable=None, hostname=None):
+    hostname = default_nodename(hostname)
+    logfile = node_format(logfile, hostname)
+    pidfile = node_format(pidfile, hostname)
     fake = 1 if C_FAKEFORK else fake
     with detached(logfile, pidfile, uid, gid, umask, working_directory, fake,
                   after_forkers=False):
@@ -51,7 +56,8 @@ def detach(path, argv, logfile=None, pidfile=None, uid=None,
             if app is None:
                 from celery import current_app
                 app = current_app
-            app.log.setup_logging_subsystem('ERROR', logfile)
+            app.log.setup_logging_subsystem(
+                'ERROR', logfile, hostname=hostname)
             logger.critical("Can't exec %r", ' '.join([path] + argv),
                             exc_info=True)
         return EX_FAILURE