如何基于数据库列每天运行sidekiq worker的特定次数?



我的项目模型:

class Project < ApplicationRecord
enum :number_of_samples, { once_per_day: 0, three_times_per_day: 1, hourly: 2 }, prefix: true
end

sidekiq worker:

class PagespeedWorker
include Sidekiq::Worker

def perform
puts 'Beginning Fetching...'
projects = ...
projects.each do |project|
sitemap = ...
sitemap.each do |url|
retrieve_data(...)
end
end
puts 'Fetching done!'
end
end

我希望能够运行worker,基于项目模型中的number_of_samples
它应该为每个项目运行,对于项目中的每个url,每天在number_of_samples字段中指定的次数。

您可以使用number_of_samples属性来循环

示例代码
projects.each do |project|
project.number_of_samples.times do
sitemap_path = project.sitemap_path
sitemap = SitemapParseService.call(sitemap_path)
sitemap.each do |url|
retrieve_data(url, 'desktop', project.id)
retrieve_data(url, 'mobile', project.id)
end
end
end

最新更新