使用无论何时 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训练营上节回顾空闲任务定时器任务执行顺序调度策略和晚课提问

如何在后台线程中按顺序运行任务[重复]

RTOS训练营上节回顾空闲任务定时器任务执行顺序调度策略和晚课提问

RTOS训练营上节回顾空闲任务定时器任务执行顺序调度策略和晚课提问