Browse Source

Do not call namespace.stop if namespace error happened before namespace initialized

Ask Solem 12 years ago
parent
commit
ec65fe0719
1 changed files with 6 additions and 2 deletions
  1. 6 2
      celery/worker/__init__.py

+ 6 - 2
celery/worker/__init__.py

@@ -78,6 +78,7 @@ class WorkController(configurated):
     worker_lost_wait = from_config()
 
     pidlock = None
+    namespace = None
 
     class Namespace(bootsteps.Namespace):
         """Worker bootstep namespace."""
@@ -250,8 +251,11 @@ class WorkController(configurated):
             self._shutdown(warm=False)
 
     def _shutdown(self, warm=True):
-        self.namespace.stop(self, terminate=not warm)
-        self.namespace.join()
+        # if namespace does not exist it means that we had an
+        # error before the bootsteps could be initialized.
+        if self.namespace is not None:
+            self.namespace.stop(self, terminate=not warm)
+            self.namespace.join()
 
     def reload(self, modules=None, reload=False, reloader=None):
         modules = self.app.loader.task_modules if modules is None else modules