我有一个rails应用程序,其中我有一个方法,我发送了很多电子邮件。我想执行此操作asynchronously
。为此,我尝试使用Sidekiq
,但我无法正常使用它 - 它不会发送任何电子邮件。
之前发送电子邮件,因此我确定我的电子邮件设置已正确设置。
在我的gemfile
我有这个:
gem 'sidekiq'
我已经bundle install
了。我还安装了redis
,按照RailsCasts #366上的说明进行操作。
我已使用以下命令启动sidekiq
:bundle exec sidekiq
,这导致了下图中显示的内容:
在application.rb
我有以下内容:
config.active_job.queue_adapter = :sidekiq
我尝试发送这样的电子邮件:
Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later!
我没有收到任何错误,但电子邮件永远不会被发送。
那么,我错过了什么吗?
答案 0 :(得分:37)
您需要使用邮件程序队列启动sidekiq以获取这些作业:
bundle exec sidekiq -q default -q mailers
Sidekiq Wiki介绍了detail here中的场景。
答案 1 :(得分:6)
您也可以修改config / sidekiq.yml:
---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
- default
- mailers
并运行sidekiq -C config/sidekiq.yml