frankfurter/bin/schedule
BadMark d0a43e357a
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / publish (push) Has been cancelled
CI/CD Pipeline / release (push) Has been cancelled
up
2026-05-21 01:38:14 -06:00

39 lines
937 B
Ruby
Executable file

#!/usr/bin/env ruby
# frozen_string_literal: true
$stdout.sync = true
require "rufus-scheduler"
require_relative "../boot"
require "provider"
require "provider/adapters"
dry_run = ARGV.include?("--dry-run")
scheduler = Rufus::Scheduler.new(max_work_threads: DB.pool.max_size) unless dry_run
# Backfill all providers on startup (staggered to avoid thundering herd)
Provider.all.shuffle.each do |provider|
if dry_run
puts "startup: backfill[#{provider.key.downcase}]"
else
scheduler.in("0s") do
provider.backfill
end
end
end
# Schedule each provider based on its publish_schedule cron expression.
Provider.all.each do |provider|
next unless provider.publish_schedule
if dry_run
puts "cron: #{provider.publish_schedule} backfill[#{provider.key.downcase}]"
else
scheduler.cron(provider.publish_schedule, overlap: false) do
provider.backfill
end
end
end
scheduler.join unless dry_run