【问题标题】:Scheduled Dynamic Resque Scheduler never launches workerScheduled Dynamic Resque Scheduler 从不启动工作器
【发布时间】:2014-04-23 11:59:40
【问题描述】:

虽然使用 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 更新到最新版本,但还没有成功。

感谢任何高级帮助。

【问题讨论】:

  • 我可以知道你的 cron_converter 是什么样的吗?:)
  • 肯定的事情 def cron_converter hour = run_at.strftime("%H") minute = run_at.strftime("%M") cron = "#{minute} #{hour} * * *" cron end @meso_2600 对不起,可怕的对齐。
  • 谢谢!也许你知道如何处理这个? stackoverflow.com/questions/25109370/…

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


【解决方案1】:

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

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

DYNAMIC_SCHEDULE=true rake resque:scheduler

自述文件中的引述:

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

【讨论】:

  • 我使用了您的解决方案,但调度程序在作业删除时失败:rake aborted! NoMethodError: nil:NilClass stackoverflow.com/questions/25109370/… 的未定义方法“键”
  • 我使用了您的解决方案,添加了 DYNAMIC_SCHEDULE=true 并且它有效。但是我已经在 resque.rake 中添加了“Resque::Scheduler.dynamic = true”。如果我已经有其他配置,为什么我必须添加 DYNAMIC_SCHEDULE?有什么想法吗?
【解决方案2】:

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

bundle exec rake 环境 resque:work bundle exec rake resque:调度器

事实证明,如果不使用 Bundle Exec,计划将不会被采纳。 我还没有尝试那里的环境变量命令,但我明天会,如果成功,我会给你积分。

【讨论】:

    【解决方案3】:

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

    QUEUE=* rake resque:work
    

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

    【讨论】:

    • 我应该说我通常有:bundle exec rake resque:scheduler QUEUE=* 最后我需要 resque:work 吗?
    • 是的,您还应该在后台运行工作进程。到目前为止,您的调度程序进程仅在运行。所以分别执行我的命令
    • 尝试了该命令,没有运气,没有任何反应。我应该说我确实有一名工人在工作,我用 resque_workers 给他们打电话。我还应该说我可以很好地运行工人,而不是预定的工人。我在 resque-schedule .yml 文件中有几个作业,它们在确定的 cron 时间运行良好,但由于某种原因,当使用动态计划和相同的确切配置时,作业无法运行。
    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2016-05-29
    • 2013-12-05
    相关资源
    最近更新 更多