我们实际上在我们的后台办公室有一个新闻通讯系统,允许用户向我们的用户发送通知。问题是我们实际上已经注册了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系统的想法吗?
非常感谢
答案 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