Explorar o código

events.State: Ignore unknown events

Ask Solem %!s(int64=11) %!d(string=hai) anos
pai
achega
a77a42ea5c
Modificáronse 1 ficheiros con 8 adicións e 2 borrados
  1. 8 2
      celery/events/state.py

+ 8 - 2
celery/events/state.py

@@ -215,6 +215,9 @@ class State(object):
         self.tasks = LRUCache(limit=max_tasks_in_memory)
         self.tasks = LRUCache(limit=max_tasks_in_memory)
         self.event_callback = callback
         self.event_callback = callback
         self._mutex = threading.Lock()
         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):
     def freeze_while(self, fun, *args, **kwargs):
         clear_after = kwargs.pop('clear_after', False)
         clear_after = kwargs.pop('clear_after', False)
@@ -295,11 +298,14 @@ class State(object):
         with self._mutex:
         with self._mutex:
             return self._dispatch_event(event)
             return self._dispatch_event(event)
 
 
-    def _dispatch_event(self, event):
+    def _dispatch_event(self, event, kwdict=kwdict):
         self.event_count += 1
         self.event_count += 1
         event = kwdict(event)
         event = kwdict(event)
         group, _, subject = event['type'].partition('-')
         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:
         if self.event_callback:
             self.event_callback(self, event)
             self.event_callback(self, event)