使用 cron 和 sidekiq 随机化作业调度

问题描述 投票:0回答:1

我正在为我爸爸建造一个小型爬行器/刮土机!我试图每周随机化抓取时间(这意味着我希望抓取方法每周在不同的一天和一天中的不同时间触发)。

每次该方法触发时,我都尝试重写 YAML 文件,但这似乎不起作用......然后我尝试了“set”方法:

def set_random_schedule(author_name)
  cron_expression = random_cron_expression
  self.class.set(cron: cron_expression).perform_async(author_name)
end

def random_cron_expression
  "#{rand(1..3)} * * * *}"
end

在日志中它说它几乎每秒都在运行,老实说我不知道为什么......或者如果我读错了,我对 sidekiq 和 cron 真的很陌生,所以我不确定我哪里出错了。请和我一起裸露在这里。 🙏🏻

对初学者有什么帮助吗?请随意解释或参考我想到的任何我一直热衷于学习的内容。 😁

ruby-on-rails sidekiq sidekiq-cron
1个回答
0
投票

在工作结束时,您可以尝试添加以下代码来重新安排其 cron 计时器:

scrape_job = Sidekiq::Cron::Job.all.find{ |job| job.klass == "YourClassNameJob"}
scrape_job.cron = "#{rand(1..3)} * * * *}"
scrape_job.save
© www.soinside.com 2019 - 2024. All rights reserved.