當我們的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