【发布时间】:2016-05-08 14:04:39
【问题描述】:
我有一个任务需要在创建请求后立即生成并尽快完成。
为此,我创建了一个/config/sidekiq.yml 文件,并在其中定义了这个:
---
:queues:
- default
- [critical, 10]
对于相应的工人,我设置了这个:
class GeneratePDFWorker
include Sidekiq::Worker
sidekiq_options queue: 'critical', retry: false
def perform(order_id)
...
然后,当我调用这个工人时:
GeneratePDFWorker.perform_async(@order.id)
所以我正在测试这个。但是——我找到了this post,据说如果我想立即执行任务,我应该调用:
GeneratePDFWorker.new.perform(@order.id)
所以我的问题是 - 我应该使用 (critical) 队列 + new (GeneratePDFWorker.new.perform) 方法的组合吗?有意义吗?
另外,我如何验证任务是否以critical 执行?
谢谢
【问题讨论】:
-
如果你只是在测试一个工人 .. 我认为在你的 rails 控制台上运行
GeneratePDFWorker.perform(@order.id)应该可以完成这项工作.. 在你正在测试的机器上运行你的 sidekiq 守护进程
标签: ruby-on-rails ruby priority-queue sidekiq