你正在阅读 Celery 3.1 的文档。开发版本文档见: 此处.

celery.worker.heartbeat 源代码

# -*- coding: utf-8 -*-
"""
    celery.worker.heartbeat
    ~~~~~~~~~~~~~~~~~~~~~~~

    This is the internal thread that sends heartbeat events
    at regular intervals.

"""
from __future__ import absolute_import

from .state import SOFTWARE_INFO, active_requests, total_count


[文档]class Heart(object): """Timer sending heartbeats at regular intervals. :param timer: Timer instance. :param eventer: Event dispatcher used to send the event. :keyword interval: Time in seconds between heartbeats. Default is 30 seconds. """ def __init__(self, timer, eventer, interval=None): self.timer = timer self.eventer = eventer self.interval = float(interval or 5.0) self.tref = None # Make event dispatcher start/stop us when it's # enabled/disabled. self.eventer.on_enabled.add(self.start) self.eventer.on_disabled.add(self.stop) def _send(self, event): return self.eventer.send(event, freq=self.interval, active=len(active_requests), processed=sum(total_count.itervalues()), **SOFTWARE_INFO)
[文档] def start(self): if self.eventer.enabled: self._send('worker-online') self.tref = self.timer.apply_interval( self.interval * 1000.0, self._send, ('worker-heartbeat', ), )
[文档] def stop(self): if self.tref is not None: self.timer.cancel(self.tref) self.tref = None if self.eventer.enabled: self._send('worker-offline')