Rails 4.2 - Sidekiq 在开发中不发送电子邮件

Posted

技术标签:

【中文标题】Rails 4.2 - Sidekiq 在开发中不发送电子邮件【英文标题】:Rails 4.2 - Sidekiq not sending emails in development 【发布时间】:2015-05-02 00:11:42 【问题描述】:

我有一个 Rails 应用程序,其中我有一个发送大量电子邮件的方法。我想执行此操作asynchronously。为此,我尝试使用Sidekiq,但我无法让它正常工作——它不发送任何电子邮件。

以前可以发送电子邮件,所以我确定我的电子邮件设置设置正确。

在我的gemfile 我有这个:

gem 'sidekiq'

我已经运行bundle install。我还安装了redis,按照RailsCasts #366 上的说明进行操作。

我已使用以下命令启动sidekiqbundle exec sidekiq,结果如下图所示:

application.rb 我有以下内容:

config.active_job.queue_adapter = :sidekiq

我尝试这样发送电子邮件:

Mailer.deliver_new_competition_notification(member.user,   @competition).deliver_later!

我没有收到任何错误,但电子邮件永远不会发送。

那么,我错过了什么吗?

【问题讨论】:

您是否包含了 proc 文件? @sansarp 不,我没有。安东尼在下面的回答足以让它发挥作用。但是我对 Procfile 很好奇,您能否详细说明我如何包含 ad Procfile,它应该包含什么以及为什么? 【参考方案1】:

您需要使用邮件队列启动 sidekiq 以获取这些作业:

bundle exec sidekiq -q default -q mailers

Sidekiq Wiki 回顾了detail here 中的场景。

【讨论】:

【参考方案2】:

你也可以修改 config/sidekiq.yml:

---
:concurrency: 25
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log
:queues:
  - default
  - mailers

然后运行sidekiq -C config/sidekiq.yml

【讨论】:

运行 sidekiq -C config/sidekiq.yml 帮助了我 - 谢谢!

以上是关于Rails 4.2 - Sidekiq 在开发中不发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有啥不同

Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误

Rails 6主动存储sidekiq文件在S3上上传背景图片

Rails:如何重启sidekiq?

Rails 6.1:Heroku 上的作业将使用 Async 而不是 Sidekiq

在 AWS Elastic Beanstalk 上配置 Rails、Sidekiq、Redis 的可持续解决方案