Explorar o código

Fixed some recently introduced bugs.

Ask Solem %!s(int64=15) %!d(string=hai) anos
pai
achega
eefbf5efc2

+ 2 - 0
celery/tests/test_worker.py

@@ -379,5 +379,7 @@ class TestWorkController(unittest.TestCase):
         worker.start()
         for w in (w1, w2, w3, w4):
             self.assertTrue(w["started"])
+        self.assertTrue(worker._running, len(worker.components))
+        worker.stop()
         for component in worker.components:
             self.assertTrue(component._stopped)

+ 0 - 3
celery/tests/test_worker_control.py

@@ -18,9 +18,6 @@ class TestControlPanel(unittest.TestCase):
     def create_panel(self, **kwargs):
         return control.ControlDispatch(hostname=hostname, **kwargs)
 
-    def test_shutdown(self):
-        self.assertRaises(SystemExit, self.panel.execute, "shutdown")
-
     def test_dump_tasks(self):
         self.panel.execute("dump_tasks")
 

+ 1 - 1
celery/worker/__init__.py

@@ -188,7 +188,7 @@ class WorkController(object):
             for i, component in enumerate(self.components):
                 self.logger.debug("Starting thread %s..." % \
                         component.__class__.__name__)
-                self._running = i
+                self._running = i + 1
                 component.start()
         finally:
             self.stop()

+ 3 - 1
celery/worker/control/builtins.py

@@ -1,3 +1,5 @@
+import os
+import signal
 from datetime import datetime
 
 from celery import conf
@@ -115,4 +117,4 @@ def ping(panel, **kwargs):
 @Panel.register
 def shutdown(panel, **kwargs):
     panel.logger.critical("Got shutdown from remote.")
-    raise SystemExit
+    os.kill(os.getpid(), signal.SIGTERM)

+ 1 - 1
celery/worker/listener.py

@@ -60,7 +60,7 @@ class CarrotListener(object):
         self.control_dispatch = ControlDispatch(logger=logger,
                                                 hostname=self.hostname,
                                                 listener=self)
-        self.prefetch_count = None
+        self.prefetch_count = SharedCounter(self.initial_prefetch_count)
         self.prev_pcount = None
         self.event_dispatcher = None
         self.heart = None