Rails/Sidekiq/Devise: 这个工作是由 Sidekiq 处理的吗?我怎么能确定?

Rails/Sidekiq/Devise: Is the job being handled by Sidekiq? How can I be sure?

我已将 Devise 设置为异步发送电子邮件,如下所示:

class User < ApplicationRecord
  ...

  def send_devise_notification(notification, *args)
    DeviseMailerJob.perform_now(devise_mailer, notification, id, *args)
  end
end

class DeviseMailerJob < ApplicationJob
  queue_as :mailers

  def perform(devise_mailer, method, user_id, *args)
    user = User.find(user_id)
    devise_mailer.send(method, user, *args).deliver_now
  end
end

我的 sidekiq.yml 看起来像这样:

---
:concurrency: 5
:queues:
  - mailers

我可以去注册页面注册,我会在日志中看到一切正常:

2018-10-09T10:02:27.793848+00:00 app[web.1]: I,
[2018-10-09T10:02:27.793770 #4]  INFO -- :
[646a58f7-9588-4a1f-a258-9fbede3cf87d] [ActiveJob] [DeviseMailerJob]
[5ceac77e-d498-4436-8f12-7cd4aff2c004] Performed DeviseMailerJob (Job ID:
5ceac77e-d498-4436-8f12-7cd4aff2c004) from Sidekiq(mailers) in 3301.06ms

但该作业未显示在 Sidekiq 仪表板中。但是我确实收到了确认邮件。所以作业 确实 得到处理。只是,我不能确定 Sidekiq 正在处理它。

查看 Heroku 日志,我看不到任何来自 Sidekiq 的日志。在仪表板上,我希望看到发送的每封电子邮件的 'processed' 计数增量。我不确定如何对此进行调查。

对于 Heroku,查看工作是否由 Sidekiq 处理的最佳方式是什么?我的代码中是否有任何内容表明该作业未由 Sidekiq 处理?

您已通过调用 perform_now:

明确告诉代码立即执行
DeviseMailerJob.perform_now