我有一个任务,我需要在创建请求后立即生成并尽快完成。
为此,我创建了一个/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)队列+newGeneratePDFWorker.new.perform)方法的组合吗?有意义吗?
另外,如何验证任务是否以critical的形式执行?
谢谢你

最佳答案

所以我的问题是-我应该使用(关键)队列+new(generatepdfworker.new.perform)方法的组合吗?有意义吗?
使用GeneratePDFWorker.new.perform将在那里运行代码,然后像正常的那样运行内联代码(以阻塞的方式,而不是异步的方式)。不能定义队列,因为它没有被排队。

10-08 18:45