使用无论何时 gem 调度顺序任务
Posted
技术标签:
【中文标题】使用无论何时 gem 调度顺序任务【英文标题】:scheduling sequential tasks with whenever gem 【发布时间】:2011-08-21 04:26:03 【问题描述】:我正在使用when来为rails应用程序安排任务。
我有一个类似的任务:
every 24.hours do
command "do_this"
rake "do_that"
end
我的意思是,当我将它写入我的 crontab 时,无论何时使用 -w,我都会看到它会生成两个同时运行的独立任务。问题是,两者在逻辑上都是一个序列,这意味着,如果命令“do_this”已经成功运行,rake 任务“do_that”应该运行。
我尝试像命令 "do_this" && rake "do_that" 一样联系两者,但我收到了语法错误。
是否存在任何技巧来在任何时候创建任务之间的这种依赖关系?
crontab 是同时并行执行作业,还是处理队列中同时调度的 N 个任务?
【问题讨论】:
为什么不将第二个命令滚动到第一个命令中呢?在我看来,如果它们在逻辑上相关,你应该把它们放在一起。更好的是,制作一个调用这两个的包装器任务并安排它。 我不想结合命令“do_this”和 rake“do_that”。我将命令“do_this”用于其他事情。当然,我可以用两者创建一个命令“do_something_else”,但我只想知道是否可以在命令之间进行逻辑与操作。 嗯,首先,你想单独使用其中一个 rake 任务的论点在这里并不适用,因为这两个任务在逻辑上是耦合的。要回答您的第二个陈述,因为所有时间都是打印出一个 crontab 命令,而 cron 不支持逻辑与,不,这是不可能的。 【参考方案1】:我认为你可以做两件事:
(1) 从 rake 任务运行命令:
task :do_that => :environment do
system "do_this"
...
end
并将您的 schedule.rb 文件简化为:
every 24.hours do
rake "do_that"
end
(2) 从命令行运行一切:
every 24.hours do
command "do_this && rake do_that"
end
【讨论】:
以上是关于使用无论何时 gem 调度顺序任务的主要内容,如果未能解决你的问题,请参考以下文章
“无论何时” gem 在 Heroku 上运行 cron 作业
如何在 ruby on rails 的亚马逊 aws 服务器中使用 gem 执行 rake 任务?
RTOS训练营上节回顾空闲任务定时器任务执行顺序调度策略和晚课提问