heart.py 714 B

123456789101112131415161718192021222324252627282930
  1. from __future__ import absolute_import, unicode_literals
  2. from celery import bootsteps
  3. from celery.worker import heartbeat
  4. from .events import Events
  5. __all__ = ['Heart']
  6. class Heart(bootsteps.StartStopStep):
  7. requires = (Events,)
  8. def __init__(self, c,
  9. without_heartbeat=False, heartbeat_interval=None, **kwargs):
  10. self.enabled = not without_heartbeat
  11. self.heartbeat_interval = heartbeat_interval
  12. c.heart = None
  13. def start(self, c):
  14. c.heart = heartbeat.Heart(
  15. c.timer, c.event_dispatcher, self.heartbeat_interval,
  16. )
  17. c.heart.start()
  18. def stop(self, c):
  19. c.heart = c.heart and c.heart.stop()
  20. shutdown = stop