From 5b8476018cd6a8c755267669448c71b2e40fc6d2 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Sun, 8 May 2016 17:58:34 +0200
Subject: [PATCH] [backend] Postpone worker setup until first use

---
 beat/web/backend/views.py | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py
index 00f958987..3e5780be2 100644
--- a/beat/web/backend/views.py
+++ b/beat/web/backend/views.py
@@ -58,18 +58,24 @@ from . import schedule
 class Work:
     '''Helper to do the required worker job for local scheduling'''
 
-    cpulimit = resolve_cpulimit_path(None)
-    process = utils.resolve_process_path()
-    environments = utils.find_environments(None)
+    cpulimit = None
+    process = None
+    environments = None
     worker = None
 
+    def __setup__(self):
+
+        Worker.cpulimit = resolve_cpulimit_path(None)
+        Worker.process = utils.resolve_process_path()
+        Worker.environments = utils.find_environments(None)
+        Work.worker = Worker.objects.get(name=socket.gethostname()) \
+            if Worker.objects.count() != 1 else Worker.objects.get()
+
     def __call__(self):
 
-        if Work.worker is None: # set it once
-            # if only one worker declared, use that one
-            Work.worker = Worker.objects.get(name=socket.gethostname()) \
-                if Worker.objects.count() != 1 else Worker.objects.get()
+        if Work.worker is None: self.__setup__()
 
+        # Regular work
         utils.cleanup_zombies()
         Work.worker.work(Work.environments, Work.cpulimit, Work.process)
 
-- 
GitLab