使用 Resque 重新排队作业

发布于 2024-12-16 14:25:38 字数 180 浏览 1 评论 0原文

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

I am interested in using Resque to distribute work to many different computers. I have one concern though. If I need to kill one of the workers that is working on a job, I would like to be able to have it automatically requeue that job to ensure that it gets run by another worker. I've worked with Django Celery and just do CTRL+C which kills the worker as well as requeues the task. Is there a way for this to happen with Resque in Rails? Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缪败 2024-12-23 14:25:39

我刚刚想通了。我可以捕获信号项 (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

抱歉这个愚蠢的问题;)

I just figured it out. I can trap the signal term (CTRL-C) and force it to either requeue the job or tell the job to fail and have resque-retry requeue the job at a later time.

For example:

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

Sorry for the silly question ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文