user enqueuer for more job types
This commit is contained in:
@@ -9,7 +9,12 @@ class Domain::Fa::UserEnqueuer
|
||||
raise if @high_water_mark <= @low_water_mark
|
||||
@user_iterator = Enumerator.new do |e|
|
||||
Domain::Fa::User.
|
||||
where(scanned_follows_at: nil, state: "ok").
|
||||
where([
|
||||
"(scanned_follows_at is null)",
|
||||
"(scanned_gallery_at is null)",
|
||||
"(scanned_page_at is null)",
|
||||
].join(" OR ")).
|
||||
where(state: "ok").
|
||||
where("id >= ?", start_at).
|
||||
find_each do |user|
|
||||
e << user
|
||||
@@ -30,8 +35,21 @@ class Domain::Fa::UserEnqueuer
|
||||
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})"
|
||||
types = []
|
||||
if user.due_for_page_scan?
|
||||
Domain::Fa::Job::UserPageJob.perform_later({ user: user })
|
||||
types << "page"
|
||||
end
|
||||
if user.due_for_gallery_scan?
|
||||
Domain::Fa::Job::UserGalleryJob.perform_later({ user: user })
|
||||
types << "gallery"
|
||||
end
|
||||
if user.due_for_follows_scan?
|
||||
Domain::Fa::Job::UserFollowsJob.perform_later({ user: user })
|
||||
types << "follows"
|
||||
end
|
||||
types = types.map { |t| t.bold }.join("|")
|
||||
logger.info "#{types} - #{user.url_name.bold} - #{user.id.to_s.bold}"
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -63,6 +81,16 @@ class Domain::Fa::UserEnqueuer
|
||||
finished_at: nil,
|
||||
performed_at: nil,
|
||||
).count,
|
||||
GoodJob::Job.where(
|
||||
queue_name: "fa_user_gallery",
|
||||
finished_at: nil,
|
||||
performed_at: nil,
|
||||
).count,
|
||||
GoodJob::Job.where(
|
||||
queue_name: "fa_post",
|
||||
finished_at: nil,
|
||||
performed_at: nil,
|
||||
).count / 5,
|
||||
].max
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,6 +21,7 @@ describe Domain::Fa::UserEnqueuer do
|
||||
enqueuer.run_once
|
||||
expect(get_enqueued_users.call.length).to eq(5)
|
||||
expect(get_enqueued_users.call).to eq(users[0...5])
|
||||
expect(SpecUtil.enqueued_jobs.length).to eq(15)
|
||||
SpecUtil.shift_jobs(Domain::Fa::Job::UserFollowsJob)
|
||||
|
||||
enqueuer.run_once
|
||||
|
||||
Reference in New Issue
Block a user