1

实际上,我们的后台有一个通讯系统,允许使用它向我们的用户发送通知。问题是我们实际上有 10,000 个注册用户,并且我们在一个循环中向每个用户发送一封电子邮件,这使得这个过程非常缓慢。

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

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

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

关于如何使其更快或实施 cronjob 系统的任何想法?

非常感谢

4

1 回答 1

1

您应该考虑使用延迟作业 gem,例如:延迟作业

另外,您可能应该按照以下方式做一些事情

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
于 2013-07-09T05:18:28.923 回答