我在Django项目中使用最新的稳定Celery(4)和RabbitMQ。
RabbitMQ在本地网络中的单独服务器上运行。并且定期跳动只是停止向工作人员发送任务而没有任何错误,只有重新启动它才能解决问题。
在worker中没有例外(在日志中检查&我也使用Sentry来捕获异常)。它只是停止发送任务。
服务配置:
[Unit]
Description=*** Celery Beat
After=network.target
[Service]
User=***
Group=***
WorkingDirectory=/opt/***/web/
Environment="PATH=/opt/***/bin"
ExecStart=/opt/***/bin/celery -A *** beat --max-interval 30
[Install]
WantedBy=multi-user.target
有可能解决这个问题吗?还是有什么好的选择吗? (Cron似乎不是最佳解决方案)。
答案 0 :(得分:3)
你的描述听起来很像这个开放的bug:https://github.com/celery/celery/issues/3409
那里有很多细节,但是高级错误描述是如果丢失了与RabbitMQ的连接,它无法重新获得连接。
不幸的是,我无法看到任何人都明确解决了这个问题。
您可以先使用以下方法调试:
ExecStart=/opt/***/bin/celery -A *** beat --loglevel DEBUG --max-interval 30