ruby-on-rails - Rails/Sidekiq/Devise:这项工作是由 Sidekiq 处理的吗?我怎么能确定?
问题描述
我已将设计设置为异步发送电子邮件,如下所示:
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 没有处理这项工作?
解决方案
您已经通过调用 perform_now 明确告诉代码立即执行:
DeviseMailerJob.perform_now
推荐阅读
- sql - Oracle jdbc jar无法在maven插件中下载
- go - 如何让一个接口方法返回另一个接口?
- sed - 如果下一行与 sed 匹配模式,如何删除下一行?
- angular - 使用 NativeScript 迁移现有 Angular 项目时,“tns 预览”不起作用
- angular - 如何使用单选按钮附加表单元素?
- c# - C# - YAXLib:如何忽略属性
- ios - AWSTransferUtility 上传方法未触发
- udp - 绑定 UDP 端口 - 绑定在 NAT 环境中持续多长时间?
- c# - 链接 imagelist 中的嵌入资源项
- javascript - 根据复选框值动态更改文本