Browse Source

Fixes for celery multi

Ask Solem 11 years ago
parent
commit
4a6cbb97e8
3 changed files with 11 additions and 4 deletions
  1. 6 2
      celery/bin/celery.py
  2. 4 1
      celery/bin/worker.py
  3. 1 1
      extra/generic-init.d/celeryd

+ 6 - 2
celery/bin/celery.py

@@ -89,7 +89,6 @@ class multi(Command):
 
     def run_from_argv(self, prog_name, argv, command=None):
         from celery.bin.multi import MultiTool
-        argv.append("--cmd=%s worker --detach" % prog_name)
         return MultiTool().execute_from_commandline(
             [command] + argv, prog_name,
         )
@@ -712,8 +711,13 @@ class CeleryCommand(Command):
                 index += 1
         return []
 
+    def prepare_prog_name(self, name):
+        if name == '__main__.py':
+            return sys.modules['__main__'].__file__
+        return name
+
     def handle_argv(self, prog_name, argv):
-        self.prog_name = prog_name
+        self.prog_name = self.prepare_prog_name(prog_name)
         argv = self.remove_options_at_beginning(argv)
         _, argv = self.prepare_args(None, argv)
         try:

+ 4 - 1
celery/bin/worker.py

@@ -148,8 +148,11 @@ class worker(Command):
     def run_from_argv(self, prog_name, argv=None, command=None):
         command = sys.argv[0] if command is None else command
         argv = sys.argv[1:] if argv is None else argv
+        # parse options before detaching so errors can be handled.
+        options, args = self.prepare_args(
+            *self.parse_options(prog_name, argv, command))
         self.maybe_detach([command] + argv)
-        return super(worker, self).run_from_argv(prog_name, argv, command)
+        return self(*args, **options)
 
     def maybe_detach(self, argv, dopts=['-D', '--detach']):
         if any(arg in argv for arg in dopts):

+ 1 - 1
extra/generic-init.d/celeryd

@@ -169,7 +169,7 @@ restart_workers () {
 
 check_status () {
     local pid_files=`_get_pid_files`
-    [ -z "$pid_files" ] && echo "celeryd is stopped" && exit 1
+    [ -z "$pid_files" ] && echo "celeryd not running (no pidfile)" && exit 1
 
     local one_failed=
     for pid_file in $pid_files; do