我有一个应用程序需要以给定的周期(例如每天一次,每周一次)轮询大量外部网站(> 10,000页,> 100个域)。
应该查询网页的实际时间不需要完全满足,只是平均每页轮询一次更改+/- 20%的周期。 对我来说,这听起来像是一份后台工作。
我看过像Sidekiq,Rescue,Delayed job这样的宝石,但我不确定它们是否真的可以用于我的需要。我认为主要方案是在网页上的事件之后开始的工作,例如在用户注册后发送的电子邮件或者更好地推送到后台的耗时计算。
在我的情况下,感觉更像是一个单一作业后的计划,即使实际的轮询频率可能会根据组织我的网站查询的实际算法而改变。
我想过有一张桌子看起来像这样:
create_table "websites" do |t|
t.string "url"
t.datetime "tracking_last_time"
t.datetime "tracking_next_time"
t.integer "tracking_period"
end
我的后台任务现在可以按tracking_next_time
对网站列表排序进行排序。
后台任务可以:
由于我有大量的网站需要查询,我甚至可能需要多个后台任务。
我在想我可以为每个域启动一项工作,并使用持久连接优化http请求。
无论如何,我不确定众所周知的背景宝石是否符合我的需要。 有没有人有想法/建议?