Я настроил 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?
=== worker (Free): bundle exec sidekiq (1) worker.1: up 2018/10/09 10:50:21 +0100 (~ 19m ago)
- person user3574603   schedule 09.10.2018config.active_job.queue_adapter = :sidekiq
- person user3574603   schedule 09.10.2018