【问题标题】:Re-queuing jobs with Resque使用 Resque 重新排队作业
【发布时间】:2011-12-30 22:36:04
【问题描述】:

我对使用 Resque 将工作分配到许多不同的计算机感兴趣。我有一个担心。如果我需要杀死一名正在从事某项工作的工人,我希望能够让它自动重新排队该工作,以确保它由另一名工人运行。我与 Django Celery 合作过,只需执行 CTRL+C 即可杀死工作人员并重新排队任务。有没有办法让 Resque 在 Rails 中发生这种情况?谢谢!

【问题讨论】:

  • 您确定 Resque 不会自动重新排队吗? Resque 假设混乱,所以如果它正常工作我不会感到惊讶。
  • 我试过了。我让两名工人从事两种不同的工作。我对其中一名工人执行了 CTRL-C,当我检查 Resque-web 时,它看起来好像已经成功处理了这项工作,而我没有终止的工人没有接受额外的工作。 =/ 如果我能捕获那个 CTRL-C 并优雅地让工作人员退出并重新排队作业。

标签: ruby-on-rails ruby redis resque


【解决方案1】:

我刚刚想通了。我可以捕获信号项 (CTRL-C) 并强制它重新排队作业或告诉作业失败并让 resque-retry 稍后重新排队作业。

例如:

def self.perform(args)
  trap("INT") do
     puts "Signal was caught!"
     #either raise an error here if using a tool like resque-retry or requeue the job
   end
  #Do work here
end

抱歉这个愚蠢的问题;)

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多