在单独的标签中,我正在运行
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!
答案 0 :(得分:0)
有多种方法可以做到这一点。一种方法是使用Sidekiq::Web
,一个很好的图形界面,用于查看计划,排队,忙碌,处理,重试和faild工作:
https://github.com/mperham/sidekiq/wiki/Monitoring
另一种方法是使用终端。运行redis-server
和sidekiq
以启动服务。现在,在rails cunsole中输入SendWithUsInviteeMailerJob.perform_async
来执行作业,然后将在运行sidekiq的终端窗格中显示该作业。
或者,在rails控制台中调用Sidekiq::enqued_jobs(queue: :mailer)
以获取一组邮件作业。但是,对于快速作业,您需要同样快速地键入以便在将作业发送到繁忙作业(Sidekiq::busy_jobs
)并执行之前捕获作业。