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
我已将 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