ソースを参照

events.state.Worker now updates freq on every message

Ask Solem 13 年 前
コミット
23ce014c3b
2 ファイル変更5 行追加2 行削除
  1. 4 1
      celery/events/state.py
  2. 1 1
      celery/worker/control.py

+ 4 - 1
celery/events/state.py

@@ -46,22 +46,25 @@ class Worker(Element):
     """Worker State."""
     heartbeat_max = 4
     expire_window = HEARTBEAT_EXPIRE_WINDOW
-    freq = 60  # default frequency for workers < 2.6
 
     def __init__(self, **fields):
+        fields.setdefault("freq", 60)
         super(Worker, self).__init__(**fields)
         self.heartbeats = []
 
     def on_online(self, timestamp=None, **kwargs):
         """Callback for the `worker-online` event."""
+        self.update(**kwargs)
         self._heartpush(timestamp)
 
     def on_offline(self, **kwargs):
         """Callback for the `worker-offline` event."""
+        self.update(**kwargs)
         self.heartbeats = []
 
     def on_heartbeat(self, timestamp=None, **kwargs):
         """Callback for the `worker-heartbeat` event."""
+        self.update(**kwargs)
         self._heartpush(timestamp)
 
     def _heartpush(self, timestamp):

+ 1 - 1
celery/worker/control.py

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