bulk user enqueuer
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
class Domain::Fa::PostEnqueuer
|
||||
include HasMeasureDuration
|
||||
include HasBulkEnqueueJobs
|
||||
include HasColorLogger
|
||||
include HasMeasureDuration
|
||||
|
||||
def initialize(start_at:, low_water_mark:, high_water_mark:)
|
||||
@low_water_mark = low_water_mark
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
class Domain::Fa::UserEnqueuer
|
||||
include HasBulkEnqueueJobs
|
||||
include HasColorLogger
|
||||
include HasMeasureDuration
|
||||
|
||||
def initialize(start_at:, low_water_mark:, high_water_mark:)
|
||||
@low_water_mark = low_water_mark
|
||||
@@ -20,12 +22,18 @@ class Domain::Fa::UserEnqueuer
|
||||
if already_enqueued <= @low_water_mark
|
||||
to_enqueue = @high_water_mark - already_enqueued
|
||||
logger.info("enqueuing #{to_enqueue.to_s.bold} more users - #{already_enqueued.to_s.bold} already enqueued")
|
||||
rows = to_enqueue.times.map do
|
||||
@user_iterator.next
|
||||
rows = measure(proc { |p| "gather #{p.length.to_s.bold} users to enqueue" }) do
|
||||
to_enqueue.times.map do
|
||||
@user_iterator.next
|
||||
end
|
||||
end
|
||||
rows.each do |user|
|
||||
Domain::Fa::Job::UserFollowsJob.perform_later({ user: user })
|
||||
logger.info "enqueue #{user.url_name.bold} (#{user.id.to_s.bold})"
|
||||
measure("enqueue jobs") do
|
||||
bulk_enqueue_jobs do
|
||||
rows.each do |user|
|
||||
Domain::Fa::Job::UserFollowsJob.perform_later({ user: user })
|
||||
logger.info "enqueue #{user.url_name.bold} (#{user.id.to_s.bold})"
|
||||
end
|
||||
end
|
||||
end
|
||||
throw StopIteration if rows.empty?
|
||||
else
|
||||
|
||||
@@ -20,8 +20,8 @@ namespace :fa do
|
||||
desc "enqueue waiting users"
|
||||
task :enqueue_waiting_users => [:set_logger_stdout, :environment] do |t, args|
|
||||
start_at = (ENV["start_at"] || 0).to_i
|
||||
low_water_mark = 20
|
||||
high_water_mark = 100
|
||||
low_water_mark = 50
|
||||
high_water_mark = 300
|
||||
poll_duration = 10
|
||||
|
||||
enqueuer = Domain::Fa::UserEnqueuer.new(
|
||||
|
||||
Reference in New Issue
Block a user