Browse Source

Adds loader.on_worker_process_init as a handler when child processes starts

Ask Solem 13 years ago
parent
commit
241413507b
2 changed files with 8 additions and 0 deletions
  1. 7 0
      celery/loaders/base.py
  2. 1 0
      celery/worker/__init__.py

+ 7 - 0
celery/loaders/base.py

@@ -74,6 +74,10 @@ class BaseLoader(object):
         starts."""
         pass
 
+    def on_worker_process_init(self):
+        """This method is called when a child process starts."""
+        pass
+
     def import_task_module(self, module):
         return self.import_from_cwd(module)
 
@@ -95,6 +99,9 @@ class BaseLoader(object):
             self.worker_initialized = True
             self.on_worker_init()
 
+    def init_worker_process(self):
+        self.on_worker_process_init()
+
     def config_from_envvar(self, variable_name, silent=False):
         module_name = os.environ.get(variable_name)
         if not module_name:

+ 1 - 0
celery/worker/__init__.py

@@ -61,6 +61,7 @@ def process_initializer(app, hostname):
     # fork(). Note that init_worker makes sure it's only
     # run once per process.
     app.loader.init_worker()
+    app.loader.init_worker_process()
 
     signals.worker_process_init.send(sender=None)