1

我有具有 2 个不同队列的 resque 和 resque-scheduler 工作人员,
他们执行相同的任务,获取某个网站的链接并保存该链接。
如果 resque-scheduler 和 resque worker 并行工作并执行相同的任务(为同一网站获取链接)会发生什么?
我该如何处理这种情况?

4

1 回答 1

1

要么你没有澄清你的设置,要么那里有一些大问题。Resque 和 Resque-scheduler 本来是要一起运行的。Resue-scheduler 只应该安排未来的任务。此类任务仍由 Resque 工作人员执行。请在他们的 github 主页上阅读此部分:https ://github.com/resque/resque-scheduler#delayed-jobs 。引用他们的话,

这会将作业...存储在 resque 延迟队列中,此时调度程序进程将从延迟队列中拉出它并将其放入给定作业的适当工作队列中,一旦有工作人员可用,它将被处理(就像任何其他resque工作一样)。

所以,你去吧。永远一起运行你的 resque worker 和调度程序。要回答您问题的另一部分,如果您通过调度程序安排某些任务并且同一任务也排队等待 resque 直接接收,则最终结果取决于任务执行逻辑。“从网站获取东西”听起来是一件无害的事情,做两次。但是,如果您根据获取的结果更新某些交易表以向供应商付款,那么您将陷入困境。

于 2013-11-19T10:12:45.773 回答