Преглед на файлове

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

Ask Solem преди 9 години
родител
ревизия
c766fb4531
променени са 1 файла, в които са добавени 8 реда и са изтрити 2 реда
  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
@@ -32,7 +33,10 @@ C_FAKEFORK = os.environ.get('C_FAKEFORK')
 
 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):
@@ -44,7 +48,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
@@ -159,6 +164,7 @@ class detached_celeryd(object):
     def prepare_arguments(self, parser):
         daemon_options(parser, default_pidfile='celeryd.pid')
         parser.add_option('--workdir', default=None, dest='working_directory')
+        parser.add_option('-n', '--hostname')
         parser.add_option(
             '--fake',
             default=False, action='store_true', dest='fake',