[deploy] Feature:Add Ability to Run RssReader via Sidekiq Cron, Prevent for DEV (#10066)

This commit is contained in:
Molly Struve 2020-08-28 14:57:22 -05:00 committed by GitHub
parent 7891db594f
commit 4ab5bf5255
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 0 deletions

View file

@ -0,0 +1,17 @@
module Articles
class RssReaderWorker
include Sidekiq::Worker
sidekiq_options queue: :medium_priority, retry: 10
def perform
# Temporary
# @sre:mstruve This is temporary until we have an efficient way to handle this job
# for our large DEV community. Smaller Forems should be able to handle it no problem
return if SiteConfig.community_name == "DEV"
# don't force fetch. Fetch "random" subset instead of all of them.
RssReader.get_all_articles(force: false)
end
end
end

View file

@ -1,3 +1,6 @@
fetch_all_rss:
cron: "20 * * * *" # every hour, 20 min after the hour
class: "Articles::RssReaderWorker"
log_worker_queue_stats:
cron: "*/10 * * * *" # every 10 minutes
class: "Metrics::RecordBackgroundQueueStatsWorker"

View file

@ -0,0 +1,15 @@
require "rails_helper"
RSpec.describe Articles::RssReaderWorker, type: :worker do
let(:worker) { subject }
include_examples "#enqueues_on_correct_queue", "medium_priority"
describe "#perform" do
it "updates RssReader articles" do
allow(RssReader).to receive(:get_all_articles)
worker.perform
expect(RssReader).to have_received(:get_all_articles).with(force: false)
end
end
end