使用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更新到最新版本,但没有运气。
感谢先进的任何帮助。
答案 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作业并在发出该命令后再试一次