在Rails中监视Resque队列的实用方法



我希望在我的Ruby on Rails应用程序中自动启动/重新启动队列。(运行在JRuby上)

我要确保满足以下条件:

  1. 在我使用capistrano部署后启动工作
  2. 如果工作线程因任何原因死亡,则重新启动
  3. 工作程序占用太多内存被停止/重新启动,并可以解雇我的电子邮件提醒

当前是否有提供此功能的工具,或者至少是其中的一个子集?如果没有重启队列/worker的任何东西,我希望至少收到通知,以便我可以手动执行。

最简单的方法是使用诸如God或Monit之类的程序来获得#2和#3。对于#1,您可以设置您的Capistrano脚本,将kill -INT发送给所有Resque工作人员,然后监控程序将再次启动它们。

使用kill -INT而不是手动停止和启动Capistrano脚本中的作业的优点是,您的部署不必等待每个worker停止处理其作业以重新启动它们。这也意味着,如果你有一个长时间运行的作业,你将很快有任何空闲的工人在新代码上运行,越快越好。

我不是特别熟悉它,但是我相信god gem经常用于进程管理。

最新更新