如何检查sidekiq队列

时间:2017-02-01 19:36:07

标签: ruby-on-rails-4 sidekiq

在单独的标签中,我正在运行

bundle exec sidekiq

在我正在运行的另一个标签中:

SendWithUsInviteeMailerJob.perform_async(invitee.id)

开始了这里的工作:

class SendWithUsInviteeMailerJob
  include Sidekiq::Worker
  sidekiq_options queue: :mailer, retry: 2

  def perform(invitee_id)
    SendWithUsInviteeMailer.welcome(invitee_id).deliver
  end
end

如何确定此作业是否在sidekiq中排队?说这是一个测试环境。我基本上希望看到这份工作是为了考试而入队的。

这是我的宝石文件:

... gem 'sidekiq' gem 'redis' ...

并在我的spec_helper中:

require 'sidekiq/testing'

  config.before(:each) do
    Sidekiq::Worker.clear_all
  end
end

Sidekiq::Testing.fake!

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。一种方法是使用Sidekiq::Web,一个很好的图形界面,用于查看计划,排队,忙碌,处理,重试和faild工作:

https://github.com/mperham/sidekiq/wiki/Monitoring

另一种方法是使用终端。运行redis-serversidekiq以启动服务。现在,在rails cunsole中输入SendWithUsInviteeMailerJob.perform_async来执行作业,然后将在运行sidekiq的终端窗格中显示该作业。

或者,在rails控制台中调用Sidekiq::enqued_jobs(queue: :mailer)以获取一组邮件作业。但是,对于快速作业,您需要同样快速地键入以便在将作业发送到繁忙作业(Sidekiq::busy_jobs)并执行之前捕获作业。