为什么 Sidekiq 4 无法正确使用邮件程序?
Why Sidekiq 4 does not work with mailer correctly?
我正在用 rails 4.2.5
、sidekiq 4.0.2
和 sidekiq_mailer 0.0.8
编写项目。目前我正在开发一个异步发送电子邮件的功能。
所以,这是我的邮件:
class UserMailer < ActionMailer::Base
include Sidekiq::Mailer
sidekiq_options queue: 'mailer', backtrace: true
default from: '<mail_from>'
def one_c_client_problems_email(message)
@message = message
email_subject = "SUBJ"
mail(to: '<mail_to>', subject: email_subject)
end
end
Sidekiq 初始化程序:
require 'sidekiq'
require 'sidekiq/web'
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
[user, password] == ['<login>', '<pass>']
end
schedule_file = 'config/schedule.yml'
if File.exists?(schedule_file) && Sidekiq.server?
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end
Sidekiq 配置文件:
---
:concurrency: 10
:pidfile: tmp/pids/sidekiq.pid
:logfile: log/sidekiq.log
:queues:
- default
- mailer
(我使用 bundle exec sidekiq -C config/sidekiq.yml
命令启动 sidekiq)
在application.rb
中,sidekiq被配置为默认活动作业适配器:
config.active_job.queue_adapter = :sidekiq
当我尝试在没有 sidekiq 的情况下从 rails 控制台发送信件时:
UserMailer.one_c_client_problems_email('message').deliver!
有效!
当我尝试使用 sidekiq 发送异步电子邮件时:
UserMailer.one_c_client_problems_email('message').deliver
什么都没发生...
P.S。定期作业运行良好,非邮件作业运行良好。
为什么它不起作用?请帮忙!
Sidekiq 中没有队列UI:
但是UI看到应该初始化的队列:
Sidekiq 日志是空的(当我 运行 sidekiq 只是 sidekiq -q default -q mailers
控制台输出也是空的)。我在日志中看到的内容:
2016-03-17T09:26:33.926Z 1852 TID-ovlvb5ofs INFO: Booting Sidekiq 4.0.2 with redis options {:url=>nil}
2016-03-17T09:26:33.954Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: 1C Client. Update users to our db. Every hour
2016-03-17T09:26:33.956Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: Survey Reminder. Remind users about unfilled surveys. 9AM every day
2016-03-17T09:26:33.995Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: 1C Client. Update users to our db. Every hour
2016-03-17T09:26:33.997Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: Survey Reminder. Remind users about unfilled surveys. 9AM every day
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Running in ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: See LICENSE and the LGPL-3.0 for licensing details.
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Starting processing, hit Ctrl-C to stop
为什么在日志中 Booting Sidekiq 4.0.2 with redis options {:url=>nil}
Redis URL 是 nil
?为什么sidekiq看不到redis?
在 Gemfile
行 gem 'rspec-sidekiq'
应该在 group :test
.
这个 gem 改变了 sidekiq 配置并且在 Sidekiq 4.X.X
版本上工作不好。
group :test do
gem 'rspec-sidekiq'
end
但是我仍然不知道为什么redis URL在日志中是nil
...
此外,sidekiq 4.0.2
不需要 sidekiq_mailer
gem 进行异步邮件传送。
我正在用 rails 4.2.5
、sidekiq 4.0.2
和 sidekiq_mailer 0.0.8
编写项目。目前我正在开发一个异步发送电子邮件的功能。
所以,这是我的邮件:
class UserMailer < ActionMailer::Base
include Sidekiq::Mailer
sidekiq_options queue: 'mailer', backtrace: true
default from: '<mail_from>'
def one_c_client_problems_email(message)
@message = message
email_subject = "SUBJ"
mail(to: '<mail_to>', subject: email_subject)
end
end
Sidekiq 初始化程序:
require 'sidekiq'
require 'sidekiq/web'
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
[user, password] == ['<login>', '<pass>']
end
schedule_file = 'config/schedule.yml'
if File.exists?(schedule_file) && Sidekiq.server?
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end
Sidekiq 配置文件:
---
:concurrency: 10
:pidfile: tmp/pids/sidekiq.pid
:logfile: log/sidekiq.log
:queues:
- default
- mailer
(我使用 bundle exec sidekiq -C config/sidekiq.yml
命令启动 sidekiq)
在application.rb
中,sidekiq被配置为默认活动作业适配器:
config.active_job.queue_adapter = :sidekiq
当我尝试在没有 sidekiq 的情况下从 rails 控制台发送信件时:
UserMailer.one_c_client_problems_email('message').deliver!
有效!
当我尝试使用 sidekiq 发送异步电子邮件时:
UserMailer.one_c_client_problems_email('message').deliver
什么都没发生...
P.S。定期作业运行良好,非邮件作业运行良好。 为什么它不起作用?请帮忙!
Sidekiq 中没有队列UI:
但是UI看到应该初始化的队列:
Sidekiq 日志是空的(当我 运行 sidekiq 只是 sidekiq -q default -q mailers
控制台输出也是空的)。我在日志中看到的内容:
2016-03-17T09:26:33.926Z 1852 TID-ovlvb5ofs INFO: Booting Sidekiq 4.0.2 with redis options {:url=>nil}
2016-03-17T09:26:33.954Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: 1C Client. Update users to our db. Every hour
2016-03-17T09:26:33.956Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: Survey Reminder. Remind users about unfilled surveys. 9AM every day
2016-03-17T09:26:33.995Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: 1C Client. Update users to our db. Every hour
2016-03-17T09:26:33.997Z 1852 TID-ovlvb5ofs INFO: Cron Jobs - add job with name: Survey Reminder. Remind users about unfilled surveys. 9AM every day
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Running in ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin15]
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: See LICENSE and the LGPL-3.0 for licensing details.
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2016-03-17T09:26:36.245Z 1852 TID-ovlvb5ofs INFO: Starting processing, hit Ctrl-C to stop
为什么在日志中 Booting Sidekiq 4.0.2 with redis options {:url=>nil}
Redis URL 是 nil
?为什么sidekiq看不到redis?
在 Gemfile
行 gem 'rspec-sidekiq'
应该在 group :test
.
这个 gem 改变了 sidekiq 配置并且在 Sidekiq 4.X.X
版本上工作不好。
group :test do
gem 'rspec-sidekiq'
end
但是我仍然不知道为什么redis URL在日志中是nil
...
此外,sidekiq 4.0.2
不需要 sidekiq_mailer
gem 进行异步邮件传送。