Rails / Sidekiq / Devise: Работает ли Sidekiq?Как я могу быть уверен? - PullRequest
0 голосов
/ 09 октября 2018

Я настроил 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.На панели инструментов я ожидал бы увидеть «обработанный» прирост подсчета для каждого отправленного электронного письма.Я не уверен, как это расследовать.

С Heroku, какой лучший способ увидеть, работает ли Sidekiq с работой?Есть ли в моем коде что-то, что Sidekiq не выполняет эту работу?

1 Ответ

0 голосов
/ 09 октября 2018

Вы явно указали, что код должен выполняться немедленно, вызвав execute_now:

DeviseMailerJob.perform_now
...