django - 检查 celery beat 是否启动并运行

标签 django celery celerybeat

在我的 Django 项目中,我使用 Celery 和 Rabbitmq 在后台运行任务。
我正在使用 celery beat scheduler 来运行周期性任务。
如何以编程方式检查 celery beat 是否已启动并正在运行?

最佳答案

定期执行对 Ping URL 的 HTTP 请求的任务。当 URL 未按时 ping 时,URL 监视器将向您发送警报。

import requests
from yourapp.celery_config import app

@app.task
def ping():
    print '[healthcheck] pinging alive status...'
    # healthchecks.io works for me:
    requests.post("https://hchk.io/6466681c-7708-4423-adf0-XXXXXXXXX")

celery periodic task计划每分钟运行一次,如果它没有命中 ping,则您的节拍服务已关闭*,监视器将启动您的邮件(或 webhook,以便您可以 zapier it 获取移动推送通知)。
celery -A yourapp.celery_config beat -S djcelery.schedulers.DatabaseScheduler

*或不知所措,您应该跟踪任务饱和度,这是 Celery 的噩梦,应该被正确检测和解决,当工作人员忙于阻塞需要优化的任务时经常发生

关于django - 检查 celery beat 是否启动并运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35355786/

相关文章:

python - 在mongoengine和Django中通过不同的变量查询不同的集合

Django session 在浏览器关闭时或在一段时间后到期

Django级联保存?

erlang - 尝试在 Mac OS X 上使用 Homebrew 安装 RabbitMQ 时无法编译 Erlang R14B03

python - Django - 使用 Celery 7 天后更新字段值

python - Celerybeat 没有按预期工作

python - 如何将基于类的任务传递给 CELERY_BEAT_SCHEDULE

python - Django View 查询和外键查找

python - 在存储在数据库中的时间运行周期性任务

django - 在 heroku 上运行 celery 的最佳实践