heartbeat.py 816 B

12345678910111213141516171819202122232425
  1. from pathlib import Path
  2. from celery.signals import heartbeat_sent, worker_ready, worker_shutdown
  3. @heartbeat_sent.connect
  4. def heartbeat(sender, **kwargs):
  5. worker_name = sender.eventer.hostname.split('@')[0]
  6. heartbeat_path = Path('/opt/maxkb-app/tmp/worker_heartbeat_{}'.format(worker_name))
  7. heartbeat_path.touch()
  8. @worker_ready.connect
  9. def worker_ready(sender, **kwargs):
  10. worker_name = sender.hostname.split('@')[0]
  11. ready_path = Path('/opt/maxkb-app/tmp/worker_ready_{}'.format(worker_name))
  12. ready_path.touch()
  13. @worker_shutdown.connect
  14. def worker_shutdown(sender, **kwargs):
  15. worker_name = sender.hostname.split('@')[0]
  16. for signal in ['ready', 'heartbeat']:
  17. path = Path('/opt/maxkb-app/tmp/worker_{}_{}'.format(signal, worker_name))
  18. path.unlink(missing_ok=True)