当我们的rails 3应用程序向用户发送消息(电子邮件或短信)时,我们需要扼杀我们这样做的速度。什么是“rails方式”来限制向用户发送大量消息?
假设
the_list = Messages.find(someconditions)
the_list.each do |msg|
msg.send_me
end
回报数百封邮件,我们(一)不是真的想他们都在内存中一次,和(b)不能一下子解雇他们。
如果我们的实际限制是发送,也就是说,每分钟200,什么是轨道方式小批量“查找”它们(B)节流调用.send_me,以满足我们的目标发送速率
FWIW我们正在Heroku上运行,并有delayed_job现在运行用于其他目的。
谢谢!那么你如何迭代下100个,下100个等等?没有重复找到相同的100一遍又一遍? – jpwynn 2011-03-09 23:02:21
检查我的更新,我认为你最好稍微改变你的模型。 – jonnii 2011-03-09 23:04:25
延迟的工作完成了所有这些工作......我们只需调用msg.delay(xxx).send_me,并在我们告诉时将它排队。我没有看到你的例子是如何一次迭代100条消息,而不是每次都重新找到相同的100条消息。 – jpwynn 2011-03-10 00:16:27