فهرست منبع

celeryd_detach now supports app argument

Ask Solem 11 سال پیش
والد
کامیت
c8f29c8e7d
2فایلهای تغییر یافته به همراه14 افزوده شده و 7 حذف شده
  1. 13 6
      celery/bin/celeryd_detach.py
  2. 1 1
      celery/bin/worker.py

+ 13 - 6
celery/bin/celeryd_detach.py

@@ -35,13 +35,15 @@ OPTION_LIST = daemon_options(default_pidfile='celeryd.pid') + (
 
 
 def detach(path, argv, logfile=None, pidfile=None, uid=None,
-           gid=None, umask=0, working_directory=None, fake=False, ):
+           gid=None, umask=0, working_directory=None, fake=False, app=None):
     with detached(logfile, pidfile, uid, gid, umask, working_directory, fake):
         try:
             os.execv(path, [path] + argv)
         except Exception:
-            from celery import current_app
-            current_app.log.setup_logging_subsystem('ERROR', logfile)
+            if app is None:
+                from celery import current_app
+                app = current_app
+            app.log.setup_logging_subsystem('ERROR', logfile)
             logger.critical("Can't exec %r", ' '.join([path] + argv),
                             exc_info=True)
         return EX_FAILURE
@@ -116,6 +118,9 @@ class detached_celeryd(object):
     else:
         execv_argv = ['-m', 'celery', 'worker']
 
+    def __init__(self, app=None):
+        self.app = app
+
     def Parser(self, prog_name):
         return PartialOptionParser(prog=prog_name,
                                    option_list=self.option_list,
@@ -146,9 +151,11 @@ class detached_celeryd(object):
                     config.append(arg)
         prog_name = os.path.basename(argv[0])
         options, values, leftovers = self.parse_options(prog_name, argv[1:])
-        sys.exit(detach(path=self.execv_path,
-                 argv=self.execv_argv + leftovers + config,
-                 **vars(options)))
+        sys.exit(detach(
+            app=self.app, path=self.execv_path,
+            argv=self.execv_argv + leftovers + config,
+            **vars(options)
+        ))
 
 
 def main(app=None):

+ 1 - 1
celery/bin/worker.py

@@ -160,7 +160,7 @@ class worker(Command):
         if any(arg in argv for arg in dopts):
             argv = [v for v in argv if v not in dopts]
             # never returns
-            detached_celeryd().execute_from_commandline(argv)
+            detached_celeryd(self.app).execute_from_commandline(argv)
             raise SystemExit(0)
 
     def run(self, hostname=None, pool_cls=None, loglevel=None,