下线时处理django + celery
Dealing with django + celery when it goes offline
我正在尝试弄清楚当我的 django 项目由于某种原因离线时如何处理芹菜。
我在文档中找到了 worker-offline 事件,所以我猜我可以在 celery 离线时以某种方式捕获此事件并通过电子邮件通知我的 celery worker 已关闭。
我的问题是如何实现这种行为?是否有任何示例或 Django 应用程序?这是我应该如何处理这些情况吗?
在我的生产设置中,我使用 supervisor to daemonize and control celery workers. You can a have script running on the system monitoring the state of the supervisor controlled states (fire an alert anytime the state of the process 进入 FATAL
状态)。
假设您的工作人员不断地在日志文件中吐出文本,您可以设置日志新鲜度检查。如果您检测到 X seconds/minute 的日志尚未更新,您会发出警报。
还有Celery Flower,一个专为远程监控和远程管理Celery而设计的系统。我没有在生产中使用它,所以我无法判断它是否满足您的特定需求。
我最终创建了这个带有 REST API 的 Django 可重用应用程序,以从外部服务或机器监控我的 celery worker:
https://github.com/psychok7/django-celery-inspect
你可以使用实时处理来处理事件,写一个消费者并在事件到来时宣布,例子可以在Monitoring and Management Guide中找到,用worker-offline事件替换task-failed事件并写您自己的处理程序来处理您捕获的事件。
我正在尝试弄清楚当我的 django 项目由于某种原因离线时如何处理芹菜。
我在文档中找到了 worker-offline 事件,所以我猜我可以在 celery 离线时以某种方式捕获此事件并通过电子邮件通知我的 celery worker 已关闭。
我的问题是如何实现这种行为?是否有任何示例或 Django 应用程序?这是我应该如何处理这些情况吗?
在我的生产设置中,我使用 supervisor to daemonize and control celery workers. You can a have script running on the system monitoring the state of the supervisor controlled states (fire an alert anytime the state of the process 进入 FATAL
状态)。
假设您的工作人员不断地在日志文件中吐出文本,您可以设置日志新鲜度检查。如果您检测到 X seconds/minute 的日志尚未更新,您会发出警报。
还有Celery Flower,一个专为远程监控和远程管理Celery而设计的系统。我没有在生产中使用它,所以我无法判断它是否满足您的特定需求。
我最终创建了这个带有 REST API 的 Django 可重用应用程序,以从外部服务或机器监控我的 celery worker: https://github.com/psychok7/django-celery-inspect
你可以使用实时处理来处理事件,写一个消费者并在事件到来时宣布,例子可以在Monitoring and Management Guide中找到,用worker-offline事件替换task-failed事件并写您自己的处理程序来处理您捕获的事件。