VRFS-1698 changed batch sending to one-at-a-time
This commit is contained in:
parent
2fe78d84c2
commit
b8736ff389
|
|
@ -115,7 +115,7 @@ ActiveAdmin.register JamRuby::EmailBatch, :as => 'Batch Emails' do
|
|||
end
|
||||
|
||||
member_action :batch_send, :method => :get do
|
||||
resource.deliver_batch
|
||||
resource.deliver_batch_async
|
||||
redirect_to admin_batch_email_path(resource.id)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ require "jam_ruby/resque/scheduled/icecast_source_check"
|
|||
require "jam_ruby/resque/scheduled/cleanup_facebook_signup"
|
||||
require "jam_ruby/resque/scheduled/user_progress_emailer"
|
||||
require "jam_ruby/resque/google_analytics_event"
|
||||
require "jam_ruby/resque/batch_email_job"
|
||||
require "jam_ruby/mq_router"
|
||||
require "jam_ruby/base_manager"
|
||||
require "jam_ruby/connection_manager"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
module JamRuby
|
||||
class BatchMailer < JamRuby::AsyncMailer
|
||||
class BatchMailer < ActionMailer::Base
|
||||
include SendGrid
|
||||
layout "user_mailer"
|
||||
|
||||
sendgrid_category :use_subject_lines
|
||||
|
|
@ -23,10 +24,10 @@ module JamRuby
|
|||
end
|
||||
end
|
||||
|
||||
def send_batch_email(batch_id, user_ids)
|
||||
users = User.find_all_by_id(user_ids)
|
||||
def send_batch_email(batch_id, user_id)
|
||||
user = User.find_by_id(user_id)
|
||||
batch = EmailBatch.find(batch_id)
|
||||
self._send_batch(batch, users)
|
||||
self._send_batch(batch, [user])
|
||||
end
|
||||
|
||||
def send_batch_email_test(batch_id)
|
||||
|
|
|
|||
|
|
@ -79,12 +79,12 @@ FOO
|
|||
end
|
||||
|
||||
def deliver_batch_sets!
|
||||
User.email_opt_in.find_in_batches(batch_size: BATCH_SIZE) do |users|
|
||||
self.email_batch_sets << (bset = EmailBatchSet.load_set(self, users.map(&:id)))
|
||||
User.email_opt_in.find_each do |user|
|
||||
bset = EmailBatchSet.sent_email(self, user.id)
|
||||
if 'test' == Rails.env
|
||||
BatchMailer.send_batch_email(self.id, bset.user_ids).deliver!
|
||||
BatchMailer.send_batch_email(self.id, bset.user_id).deliver!
|
||||
else
|
||||
BatchMailer.send_batch_email(self.id, bset.user_ids).deliver
|
||||
BatchMailer.send_batch_email(self.id, bset.user_id).deliver
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -94,6 +94,10 @@ FOO
|
|||
self.deliver_batch_sets!
|
||||
end
|
||||
|
||||
def deliver_batch_async
|
||||
BatchEmailJob.enqueue(self.id)
|
||||
end
|
||||
|
||||
def test_count
|
||||
self.test_emails.split(',').count
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,12 +5,22 @@ module JamRuby
|
|||
belongs_to :email_batch, :class_name => 'JamRuby::EmailBatch'
|
||||
belongs_to :user, :class_name => 'JamRuby::User'
|
||||
|
||||
def self.load_set(batch, user_ids)
|
||||
# def self.load_set(batch, user_ids)
|
||||
# bset = self.new
|
||||
# bset.email_batch_id = batch.id
|
||||
# bset.user_ids = user_ids.join(',')
|
||||
# bset.started_at = Time.now
|
||||
# bset.batch_count = user_ids.size
|
||||
# bset.save!
|
||||
# bset
|
||||
# end
|
||||
|
||||
def self.sent_email(batch, user_id)
|
||||
bset = self.new
|
||||
bset.email_batch_id = batch.id
|
||||
bset.user_ids = user_ids.join(',')
|
||||
bset.user_id = user_id
|
||||
bset.started_at = Time.now
|
||||
bset.batch_count = user_ids.size
|
||||
bset.batch_count = 1
|
||||
bset.save!
|
||||
bset
|
||||
end
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
require 'resque'
|
||||
require 'resque-lonely_job'
|
||||
|
||||
module JamRuby
|
||||
class BatchEmailJob
|
||||
extend Resque::Plugins::LonelyJob
|
||||
|
||||
@@log = Logging.logger[BatchEmailJob]
|
||||
|
||||
@queue = :batch_emails
|
||||
|
||||
def self.perform(batch_id)
|
||||
if ebatch = EmailBatch.find_by_id(batch_id)
|
||||
ebatch.deliver_batch
|
||||
end
|
||||
end
|
||||
|
||||
def self.enqueue(batch_id)
|
||||
begin
|
||||
Resque.enqueue(self, batch_id)
|
||||
true
|
||||
rescue
|
||||
# implies redis is down. but since there is no retry logic with this, we should at least log a warn in case we've configured something wrong
|
||||
@@log.warn("unable to enqueue")
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue