Rails群发电子邮件很慢

时间:2013-07-09 03:30:35

标签: ruby-on-rails performance email cron

我们实际上在我们的后台办公室有一个新闻通讯系统,允许用户向我们的用户发送通知。问题是我们实际上已经注册了10,000个用户,我们正在向循环内的每个用户发送一封电子邮件,这使得该过程非常缓慢。

def send
    users.each do |u|
        @display_name = u.display_name
        mail ( to: u.email, subject: "The day subject" )
    end
end

我打算将它作为BCC发送,以使其(可能)更快,但由于我们需要在电子邮件模板(:display_name)中显示用户名,遗憾的是不可能。

我在考虑将它委托给一个cronjob,它会发送每个,比如说5分钟,当时发送一封1000个人的电子邮件(1,000到1,000,直到达到总用户数)。问题是我不知道如何以及从哪里开始。

有关如何加快速度或实施cronjob系统的想法吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

您应该考虑使用延迟的工作宝石,例如:delayed jobs

你也应该按照

的方式做点什么
users.in_groups_of( 1000, false ).each do |user|
  # mail code here
  @display_name = user.display_name
  mail ( to: user.email, subject: "The day subject" )
end