Geo*_*a.b 5 ruby ruby-on-rails redis sidekiq ruby-on-rails-4
我在我的Rails 4.2应用程序中设置了两个Sidekiq工作器,其中第一个执行多个作业,另一个在所有这些作业完成后发送电子邮件.这两个耦合在这个超级工作者:
Superworker.define(:PrioritySuperworker, :object_class, :object_id, :priority_ids) do
batch priority_ids: :priority_id do
PriorityMailsWorker :object_class, :object_id, :priority_id
end
SendConfirmationWorker :object_class, :object_id
end
Run Code Online (Sandbox Code Playgroud)
我想在调用这个超级工作者的模型中执行另一个操作,但是只有当superjob已经完成时(这意味着其中的所有子工作也已完成).我已经看到Sidekiq Pro可以在完成批处理时触发回调,但由于我在开源平台上工作,所以我买不起.有没有办法使用Superworker或任何其他免费工具?
我不知道这是否是一个选项,但如果我没有记错的话,它看起来很像你所需要的。
根据sidekiq-sperworker gem 文档,您可以设置第三个工作程序并将其添加到超级工作程序,从而确保它仅在所有前面的工作完成时才运行。
根据您的示例,它将如下所示:
Superworker.define(:PrioritySuperworker, :object_class, :object_id, :priority_ids) do
batch priority_ids: :priority_id do
PriorityMailsWorker :object_class, :object_id, :priority_id
end
SendConfirmationWorker :object_class, :object_id
PerformAnotherOperationInModel :object_class, :object_id
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
234 次 |
最近记录: |