Parcourir la source

events.State: Ignore unknown events

Ask Solem il y a 11 ans
Parent
commit
3d863e347b
1 fichiers modifiés avec 8 ajouts et 2 suppressions
  1. 8 2
      celery/events/state.py

+ 8 - 2
celery/events/state.py

@@ -284,6 +284,9 @@ class State(object):
         self._taskheap = []
         self.event_callback = callback
         self._mutex = threading.Lock()
+        self.handlers = {'task': self.task_event,
+                         'worker': self.worker_event}
+        self._get_handler = self.handlers.__getitem__
 
     def freeze_while(self, fun, *args, **kwargs):
         clear_after = kwargs.pop('clear_after', False)
@@ -383,11 +386,14 @@ class State(object):
         with self._mutex:
             return self._dispatch_event(event)
 
-    def _dispatch_event(self, event):
+    def _dispatch_event(self, event, kwdict=kwdict):
         self.event_count += 1
         event = kwdict(event)
         group, _, subject = event['type'].partition('-')
-        getattr(self, group + '_event')(subject, event)
+        try:
+            self._get_handler(group)(subject, event)
+        except KeyError:
+            pass
         if self.event_callback:
             self.event_callback(self, event)