events.py 981 B

12345678910111213141516171819202122232425262728293031323334353637
  1. from __future__ import absolute_import
  2. import sys
  3. from ..api import BaseWebSocketHandler
  4. class EventsApiHandler(BaseWebSocketHandler):
  5. def open(self, task_id=None):
  6. BaseWebSocketHandler.open(self)
  7. self.task_id = task_id
  8. @classmethod
  9. def send_message(cls, event):
  10. for l in cls.listeners:
  11. if not l.task_id or l.task_id == event['uuid']:
  12. l.write_message(event)
  13. EVENTS = ('task-sent', 'task-received', 'task-started', 'task-succeeded',
  14. 'task-failed', 'task-revoked', 'task-retried')
  15. def getClassName(eventname):
  16. return ''.join(map(lambda x: x[0].upper() + x[1:], eventname.split('-')))
  17. # Dynamically generates handler classes
  18. thismodule = sys.modules[__name__]
  19. for event in EVENTS:
  20. classname = getClassName(event)
  21. setattr(thismodule, classname,
  22. type(classname, (EventsApiHandler, ), {'listeners': []}))
  23. __all__ = list(map(getClassName, EVENTS))
  24. __all__.append(getClassName)