1

虽然使用 resque-scheduler 根据用户的输入来设置动态 cron 作业,但似乎已设置了时间表,但工作人员从未真正按照设定的时间表开始。

在 Resque 配置中,动态设置为 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 更新到最新版本,但还没有运气。

感谢您在高级方面的任何帮助。

4

3 回答 3

5

您可能忘记在DYNAMIC_SCHEDULE环境变量设置为true.

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

DYNAMIC_SCHEDULE=true rake resque:scheduler

引用自述文件:

DYNAMIC_SCHEDULE - 如果非空则启用动态调度(默认为 false)

于 2014-03-20T16:30:33.827 回答
2

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

bundle exec rake 环境 resque:work bundle exec rake resque:scheduler

事实证明,不使用 Bundle Exec 将无法获取计划。我还没有尝试过那里的环境变量命令,但我明天会,如果可行,我会给你积分。

于 2014-03-21T03:48:58.570 回答
0

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

QUEUE=* rake resque:work

设置 cron 作业并在发出该命令后重试

于 2014-03-18T01:42:35.150 回答