【发布时间】:2010-07-20 14:41:10
【问题描述】:
如果我需要在延迟的工作中创建重复任务,什么是干净的解决方案?我有一个导入任务,我想每 5 分钟运行一次,但我不想启动 rails/rake 来告诉它创建一个可以获取的延迟作业。如果 Rails 已经在系统上运行,也许我可以创建一个 HTTP 请求,让 Rails 应用程序触发 DJ?我可以将该 cron 任务放在每 5 分钟运行一次的 ruby 脚本中,向服务器发出请求,但不会启动 rails。你怎么看?
【问题讨论】:
如果我需要在延迟的工作中创建重复任务,什么是干净的解决方案?我有一个导入任务,我想每 5 分钟运行一次,但我不想启动 rails/rake 来告诉它创建一个可以获取的延迟作业。如果 Rails 已经在系统上运行,也许我可以创建一个 HTTP 请求,让 Rails 应用程序触发 DJ?我可以将该 cron 任务放在每 5 分钟运行一次的 ruby 脚本中,向服务器发出请求,但不会启动 rails。你怎么看?
【问题讨论】:
delayed_job 的这个分支已经内置了循环(可能还有其他分支也这样做):
【讨论】:
cron 方法似乎仍然很干净。它只需要运行一个rake 调用,而不是一个完整的Rails 服务器。 Rake 不需要 Rails 运行即可工作。
但是,如果您真的不喜欢这种方法,那么您可以安排 重复作业 在处理它们时自行重新排队,将 run_at 时间设置为 5 分钟(或无论如何)在未来。显然,您需要第一次启动队列并确保 delayed_job 服务器保持运行
【讨论】:
关于那个……我也有同样的愿望, 我计划每 5 分钟有一个 cron 在我的站点的特定路线上启动一个 curl 请求,所以它运行一个带有结果的操作,我'我会很确定它只运行了一次。
我的目的包括:颁发徽章和编制一些平均分
【讨论】: