lib/mail_spy/manager.rb in mail_spy-0.0.12 vs lib/mail_spy/manager.rb in mail_spy-0.0.13

- old
+ new

@@ -71,29 +71,28 @@ # Batches through all the emails that were scheduled and have come due # sends them out (step many at a time) def send_outstanding_emails(step=100, num_threads=50) raise "No Email service providers installed" unless MailSpy.esps.present? - pool = MailSpy::ThreadPool.new(num_threads) + wq = WorkQueue.new(num_threads, step*2) offset = 0 sent = 0 # Helper function for setting present values def set_if_present(email, pony_hash, pony_key, email_key=nil) email_key = pony_key if email_key.nil? value = email.send("#{email_key}") pony_hash[pony_key] = value if value.present? end - while true emails = MailSpy::Email. limit(step).offset(offset). where(:schedule_at.lte => DateTime.now, :sent => false, :failed => false).all break if emails.blank? emails.each do |email| - pool.schedule do + wq.enqueue_b do begin MailSpy::CoreMailer.template(email).deliver email.update_attribute(:sent, true) sent += 1 rescue Exception => e @@ -101,19 +100,14 @@ email.error_message = e.try(:message) email.error_backtrace = e.try(:backtrace) email.save! end end - - while(pool.job_queue_size > (2 * num_threads)) - sleep(1) - end - end offset += step end - pool.shutdown + wq.join sent end # ------------------------------------------- TRACKING