我一直在使用 Sidekiq 成功运行由 Rails 3.2 应用程序中的用户操作启动的后台作业。我的特定应用程序涉及通过第三方 API 从外部源发送和接收数据。
我需要通过不断检查每个用户是否有可下载的数据来保持数据与此外部源同步。
如上所述,到目前为止,我所有的后台工作都是由用户启动的。我的问题是,如果我想连续检查每个用户是否存在外部数据,while
我想在一个循环中:
# pseudocode
while true
for user in User.active
data = user.get_data
next if data.blank?
UserDataWorker.perform_async(user.id)
end
end
那么我把上面的代码放在哪里呢?我对如何产生一个连续的任务感到困惑。我不想将代码放在 Sidekiq 工作人员中,因为这将是一项永远不会完成的工作。还是我应该这样做?
我不想把它放在一个 rake 任务中,因为那我如何监控那个 rake 任务?我读到的关于 Sidekiq 的所有内容似乎都指向一个 Worker 运行的任务是有限的并且能够完成或出错。感谢您提供的任何帮助。