安排任务运行

时间:2014-12-03 10:14:15

标签: ruby architecture system

我有一个脚本,必须在指定的时间内在特定时间运行。

我正在寻找发条宝石(https://github.com/tomykaira/clockwork),它似乎是我最终可能用来完成此任务的最接近的软件,不幸的是它似乎没有给出设置持续时间的能力(从下午3点开始下午5点开始),这意味着我必须将功能拆分为2,启动脚本将成为发条的工作,通过自定义解决方案停止脚本本身。

非常不理想和混乱。

人们如何在Ruby中做到这一点? TIA

2 个答案:

答案 0 :(得分:0)

同样的工作有一个名为whenever的伟大宝石。有了它,您可以为您的任务设置确切的时间,例如:

every 1.day, :at => '4:30 am' do
  runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
end

但是你必须有两个阶段,一个是开始一个停止你的工作,这似乎比我的意见在某个时候杀死自己的工作更自然。

答案 1 :(得分:0)

有些笨拙,但还有另一种解决方案。我不确定您使用什么来托管您的应用,但在Heroku上,您可以设置scheduler每10分钟,每小时或每天运行一次。然后在调度程序调用的方法内部,您可以确定当前时间。假设您只想在下午3点到下午5点之间运行它,您只需将代码包装在if语句中,该语句将验证当前时间是在下午3点到下午5点之间(注意与UTC的时间转换)。

希望这会有所帮助。