我有一个任务,我需要在创建请求后立即生成并尽快完成。
为此,我创建了一个/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
的形式执行?谢谢你
最佳答案
所以我的问题是-我应该使用(关键)队列+new(generatepdfworker.new.perform)方法的组合吗?有意义吗?
使用GeneratePDFWorker.new.perform
将在那里运行代码,然后像正常的那样运行内联代码(以阻塞的方式,而不是异步的方式)。不能定义队列,因为它没有被排队。