【问题标题】:calling multiple sidekiq workers from a worker从一个工作人员那里调用多个 sidekiq 工作人员
【发布时间】:2013-11-05 09:20:47
【问题描述】:

我必须根据用户的请求运行多个作业。然而,其中只有一个是重要的。

所以我有一个MainWorker 在其perform 方法中调用不同的其他工作人员,例如Worker1Worker2

Worker1 和 Worker2 可以延迟,我需要优先 MainWorker。

这就是我的 perform 方法现在的样子

class MainWorker
 def perform( user_id ) 
   User.find( user_id ).main_task
   Worker1.perform_async( user_id ) 
   Worker2.perform_async( user_id ) 
 end
end

我以后可能会有更多的子工人出现。我想知道这是否是一种好的做法,或者有更好的方法来做到这一点。但是,我将自定义队列名称和优先级分配给基于工作人员的队列名称。

【问题讨论】:

  • 是否需要在 main_task 之后立即运行 Worker1 和 Worker2?或者也许所有这些都可以同时运行?
  • 它们可以延迟,它们不需要同时运行,但Worker1和Worker2必须在MainWorker perform方法完成后运行,即主任务。
  • 所以,我没有看到任何更好的解决方案来解决您的问题
  • perform_aync???你不是说perform_async吗?

标签: ruby-on-rails-3 ruby-on-rails-3.2 redis sidekiq


【解决方案1】:

Sidekiq 有一些第 3 方插件。见这里:https://github.com/mperham/sidekiq/wiki/Related-Projects

可能对您有帮助的是:SidekiqSuperworker

【讨论】:

    最近更新 更多