在我的 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/