【发布时间】:2013-07-22 16:13:26
【问题描述】:
我一直在成功使用 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 运行的任务是有限的并且能够完成或出错。感谢您提供的任何帮助。
【问题讨论】:
-
使用cron作业怎么样?
-
我想过,但 cron 更面向任务,我正在寻找的更像是一个守护进程。
标签: ruby-on-rails-3 ruby-on-rails-3.2 sidekiq