我必须根据用户的请求运行多个作业。然而,在这些作业中只有一个是重要的。
所以我有一个 MainWorker
在其 perform
方法,我调用不同的其他工人,如 Worker1
, Worker2
.
Worker1和Worker2可以延迟,我需要优先考虑MainWorker。
所以现在我的执行方法是这样的
class MainWorker
def perform( user_id )
User.find( user_id ).main_task
Worker1.perform_async( user_id )
Worker2.perform_async( user_id )
end
end
我以后可能会有更多的子工出现。 我想知道这是否是一个好的做法,或者有更好的方法来做这件事。然而我给自定义的队列名称和基于工人的优先级。
Sidekiq有一些第三方的附加组件。请看这里。https:/github.commperhamsidekiqwikiRelated-Projects)。
一个可能对你有帮助的是。SidekiqSuperworker.