i was trying the other day to create some sort of a newsletter. sadly it took me about 2 hours to generate and send 51000 emails (not spam :) ) so i tried to find a way to do it a little faster.
a friend of mine came across the idea of using threads so i tried to override the basics of ActionMailer in order to make the delivery method to user threads.
the change boosted me up to 18-20 mails per second, in other words, 1900% more efficient!
here is the code, just push it in your environment.rb (or lib, whatever), just don't use it for mean/nasty/microsoft needs :).
- ActionMailer::Base.delivery_method = :thread_smtp
- module ActionMailer
- class Base
- def perform_delivery_thread_smtp(mail)
- thread = Thread.new do
- perform_delivery_smtp(mail)
- end
- thread.run
- end
- end
- end
1 comments:
December 18, 2007 at 10:55 PM
Nice. But you don't need Thread.run. Be careful that your program doesn't exit before the thread completes or it won't get to finish its work.
Post a Comment