计划的动态Resque计划程序永远不会启动工作程序

时间:2014-03-18 01:14:46

标签: ruby-on-rails ruby resque resque-scheduler

使用resque-scheduler根据用户的输入set_schedule动态cron作业时,似乎设置了计划,但工作人员实际上从未按设定的计划启动。

在Resque配置中,dynamic设置为true,如下所示:Resque :: Scheduler.dynamic = true 我正在设定这样的时间表:

  name = business.name + '_employee_import'
  config = {}
  config[:class] = 'ImporterWorker'
  config[:args] = business.id.to_s
  config[:cron] = cron_converter
  config[:persist] = true
  Resque.set_schedule(name, config) 

如果我在命令行中执行:

  Resque.get_schedule("business_employee_import") 

我明白了:

  {"class"=>"MyWorker", "args"=>"87", "cron"=>"19 18 * * * *"}

但到了下午6:19,工人才开始。我有一个工人正在运行,但工作永远不会被接收,我不知道为什么或如何排除故障。在我看来这应该工作。我也尝试将resque-scheduler更新到最新版本,但没有运气。

感谢先进的任何帮助。

3 个答案:

答案 0 :(得分:5)

您可能忘记在DYNAMIC_SCHEDULE环境变量设置为true的情况下启动调度程序。

以下是我用来启动调度程序的命令:

DYNAMIC_SCHEDULE=true rake resque:scheduler

引自README:

  

DYNAMIC_SCHEDULE - 如果非空,则启用动态调度(默认值   假)

答案 1 :(得分:2)

我实际上通过使用以下命令解决了我的问题:

捆绑exec rake环境resque:工作 bundle exec rake resque:scheduler

如果不使用Bundle Exec,则无法获取计划。 我没有尝试过那里的环境变量命令,但是明天我会的,如果能解决的话,我会给你点数。

答案 2 :(得分:0)

确保您正在运行队列任务。因此,您的计划任务将被队列选中。

QUEUE=* rake resque:work

设置cron作业并在发出该命令后再试一次