|  | @@ -164,8 +164,13 @@ def multi_args(p, cmd="celeryd", append="", prefix="", suffix=""):
 | 
											
												
													
														|  |      options = dict(p.options)
 |  |      options = dict(p.options)
 | 
											
												
													
														|  |      ranges = len(names) == 1
 |  |      ranges = len(names) == 1
 | 
											
												
													
														|  |      if ranges:
 |  |      if ranges:
 | 
											
												
													
														|  | -        names = map(str, range(1, int(names[0]) + 1))
 |  | 
 | 
											
												
													
														|  | -        prefix = "celery"
 |  | 
 | 
											
												
													
														|  | 
 |  | +        try:
 | 
											
												
													
														|  | 
 |  | +            noderange = int(names[0])
 | 
											
												
													
														|  | 
 |  | +        except ValueError:
 | 
											
												
													
														|  | 
 |  | +            pass
 | 
											
												
													
														|  | 
 |  | +        else:
 | 
											
												
													
														|  | 
 |  | +            names = map(str, range(1, int(names[0]) + 1))
 | 
											
												
													
														|  | 
 |  | +            prefix = "celery"
 | 
											
												
													
														|  |      cmd = options.pop("--cmd", cmd)
 |  |      cmd = options.pop("--cmd", cmd)
 | 
											
												
													
														|  |      append = options.pop("--append", append)
 |  |      append = options.pop("--append", append)
 | 
											
												
													
														|  |      hostname = options.pop("--hostname",
 |  |      hostname = options.pop("--hostname",
 | 
											
										
											
												
													
														|  | @@ -195,12 +200,9 @@ def say(m):
 | 
											
												
													
														|  |      sys.stderr.write("%s\n" % (m, ))
 |  |      sys.stderr.write("%s\n" % (m, ))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -def detach_worker(argv):
 |  | 
 | 
											
												
													
														|  | -    path = sys.executable
 |  | 
 | 
											
												
													
														|  | -    argv = [sys.executable, "-m", "celery.bin.celeryd_detach"] + argv
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +def detach_worker(argv, path=sys.executable):
 | 
											
												
													
														|  |      if os.fork() == 0:
 |  |      if os.fork() == 0:
 | 
											
												
													
														|  | -        os.execv(path, argv)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        os.execv(path, [path] + argv)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  class MultiTool(object):
 |  |  class MultiTool(object):
 | 
											
										
											
												
													
														|  | @@ -215,7 +217,7 @@ class MultiTool(object):
 | 
											
												
													
														|  |                           "help": self.help}
 |  |                           "help": self.help}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def __call__(self, argv, cmd="celeryd"):
 |  |      def __call__(self, argv, cmd="celeryd"):
 | 
											
												
													
														|  | -        if len(argv) == 0:
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if len(argv) == 0 or argv[0][0] == "-":
 | 
											
												
													
														|  |              self.usage()
 |  |              self.usage()
 | 
											
												
													
														|  |              sys.exit(0)
 |  |              sys.exit(0)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -248,6 +250,7 @@ class MultiTool(object):
 | 
											
												
													
														|  |          p = NamespacedOptionParser(argv)
 |  |          p = NamespacedOptionParser(argv)
 | 
											
												
													
														|  |          p.options.setdefault("--pidfile", "celeryd@%n.pid")
 |  |          p.options.setdefault("--pidfile", "celeryd@%n.pid")
 | 
											
												
													
														|  |          p.options.setdefault("--logfile", "celeryd@%n.log")
 |  |          p.options.setdefault("--logfile", "celeryd@%n.log")
 | 
											
												
													
														|  | 
 |  | +        p.options.setdefault("--cmd", "-m celery.bin.celeryd_detach")
 | 
											
												
													
														|  |          for nodename, argv, _ in multi_args(p, cmd):
 |  |          for nodename, argv, _ in multi_args(p, cmd):
 | 
											
												
													
														|  |              print("> Starting node %s..." % (nodename, ))
 |  |              print("> Starting node %s..." % (nodename, ))
 | 
											
												
													
														|  |              print(argv)
 |  |              print(argv)
 |