Kaynağa Gözat

Send software info with worker-heartbeat sent by heartbeat command

Ask Solem 14 yıl önce
ebeveyn
işleme
877019b471

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

@@ -55,7 +55,7 @@ def disable_events(panel):
 def heartbeat(panel):
     panel.logger.debug("Heartbeat requested by remote.")
     dispatcher = panel.consumer.event_dispatcher
-    dispatcher.send("worker-heartbeat")
+    dispatcher.send("worker-heartbeat", **state.SOFTWARE_INFO)
 
 
 @Panel.register

+ 4 - 11
celery/worker/heartbeat.py

@@ -1,9 +1,8 @@
-import platform
 import threading
 
 from time import time, sleep
 
-from celery import __version__
+from celery.worker.state import SOFTWARE_INFO
 
 
 class Heart(threading.Thread):
@@ -14,9 +13,6 @@ class Heart(threading.Thread):
                        Default is 2 minutes.
 
     """
-    software_info = {"sw_ident": "celeryd",
-                     "sw_ver": __version__,
-                     "sw_sys": platform.system()}
 
     #: Beats per minute.
     bpm = 0.5
@@ -34,11 +30,8 @@ class Heart(threading.Thread):
         self._state = "RUN"
         bpm = self.bpm
         dispatch = self.eventer.send
-        software_info = self.software_info
 
-        dispatch("worker-online", **software_info)
-
-        sw_ident, sw_ver, sw_sys = self.software_info
+        dispatch("worker-online", **SOFTWARE_INFO)
 
         # We can't sleep all of the interval, because then
         # it takes 60 seconds (or value of interval) to shutdown
@@ -55,12 +48,12 @@ class Heart(threading.Thread):
 
             if not last_beat or now > last_beat + (60.0 / bpm):
                 last_beat = now
-                dispatch("worker-heartbeat", **software_info)
+                dispatch("worker-heartbeat", **SOFTWARE_INFO)
             if self._shutdown.isSet():
                 break
             sleep(1)
 
-        dispatch("worker-offline", **software_info)
+        dispatch("worker-offline", **SOFTWARE_INFO)
 
     def stop(self):
         """Gracefully shutdown the thread."""

+ 7 - 0
celery/worker/state.py

@@ -1,9 +1,16 @@
+import platform
 import shelve
 
+from celery import __version__
 from celery.utils import cached_property
 from celery.utils.compat import defaultdict
 from celery.datastructures import LimitedSet
 
+#: Worker software/platform information.
+SOFTWARE_INFO = {"sw_ident": "celeryd",
+                 "sw_ver": __version__,
+                 "sw_sys": platform.system()}
+
 #: maximum number of revokes to keep in memory.
 REVOKES_MAX = 10000