only enqueue next most important scan

This commit is contained in:
Dylan Knutson
2025-02-28 01:34:59 +00:00
parent 79a20afcff
commit a1ad0f71ab
3 changed files with 18 additions and 14 deletions

View File

@@ -210,7 +210,7 @@ class Domain::Fa::Job::Base < Scraper::JobBase
if creator = post.creator
creator.state_ok!
creator.save!
enqueue_user_scan(creator)
enqueue_user_scan(creator, at_most_one_scan: true)
end
end
@@ -233,8 +233,8 @@ class Domain::Fa::Job::Base < Scraper::JobBase
ListingPageScanStats.new(new_posts:, all_posts:)
end
sig { params(user: Domain::User::FaUser).void }
def enqueue_user_scan(user)
sig { params(user: Domain::User::FaUser, at_most_one_scan: T::Boolean).void }
def enqueue_user_scan(user, at_most_one_scan:)
logger.tagged(make_arg_tag(user)) do
args =
if user.persisted?
@@ -260,18 +260,19 @@ class Domain::Fa::Job::Base < Scraper::JobBase
end
# don't enqueue any other jobs if the user page hasn't been scanned yet
return unless user.scanned_page_at?
return if at_most_one_scan && user.page_scan.due?
if user.gallery_scan.due? &&
defer_job(Domain::Fa::Job::UserGalleryJob, args)
if user.favs_scan.due? && defer_job(Domain::Fa::Job::FavsJob, args)
logger.info(
format_tags(
"enqueue user gallery job",
make_tag("last gallery scan", user.gallery_scan.ago_in_words),
"enqueue user favs job",
make_tag("last favs scan", user.favs_scan.ago_in_words),
),
)
end
return if at_most_one_scan && user.favs_scan.due?
if user.follows_scan.due? &&
defer_job(Domain::Fa::Job::UserFollowsJob, args)
logger.info(
@@ -282,11 +283,14 @@ class Domain::Fa::Job::Base < Scraper::JobBase
)
end
if user.favs_scan.due? && defer_job(Domain::Fa::Job::FavsJob, args)
return if at_most_one_scan && user.follows_scan.due?
if user.gallery_scan.due? &&
defer_job(Domain::Fa::Job::UserGalleryJob, args)
logger.info(
format_tags(
"enqueue user favs job",
make_tag("last favs scan", user.favs_scan.ago_in_words),
"enqueue user gallery job",
make_tag("last gallery scan", user.gallery_scan.ago_in_words),
),
)
end
@@ -483,7 +487,7 @@ class Domain::Fa::Job::Base < Scraper::JobBase
Domain::User::FaUser.create!(url_name:) do |user|
user.name ||= url_name
end
enqueue_user_scan(user)
enqueue_user_scan(user, at_most_one_scan: true)
when FoundLink::FaPost
fa_id = link.fa_id
post =

View File

@@ -28,7 +28,7 @@ class Domain::Fa::Job::ScanPostJob < Domain::Fa::Job::Base
if creator = post.creator
logger.push_tags(make_arg_tag(creator))
enqueue_user_scan(creator)
enqueue_user_scan(creator, at_most_one_scan: true)
end
if first_log_entry&.status_code == 200

View File

@@ -29,7 +29,7 @@ class Domain::Fa::Job::UserPageJob < Domain::Fa::Job::Base
check_skip_followed_by_users_scan(user, user_page)
end
enqueue_user_scan(user)
enqueue_user_scan(user, at_most_one_scan: false)
logger.info "completed page scan"
ensure
user.save! if user