歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Ruby 定時任務之一(初步嘗試)

Ruby 定時任務之一(初步嘗試)

日期:2017/3/1 9:45:20   编辑:Linux編程

最近工作需要用到定時任務。原來寫java的時候也用到過類似的Scheduler的功能。

Ruby語言中也有同樣功能的工具。rufus-scheduler。

《Ruby for Rails中文版》.((美)David Black ).[PDF] http://www.linuxidc.com/Linux/2014-03/97569.htm

重要文章閱讀:Ruby入門--Linux/Windows下的安裝、代碼開發及Rails實戰 http://www.linuxidc.com/Linux/2014-04/100242.htm

下面介紹一下rufus-scheduler。

  定義: a Ruby gem for scheduling pieces of code (jobs). It understands running a job AT a certain time, IN a certain time, EVERY x time or simply via a CRON statement.

安裝:gem install rufus-scheduler(gem安裝是前提,再次不多言)

使用:rufus-scheduler可以指定在特定時間時執行,在從此刻開始間隔多長時間執行,在特定時間間隔內循執行,在特定的cron時間執行。例子如下:

1:指定特定時間(或者超過指定時間)執行

 1 require 'rufus-scheduler'
 2 scheduler = Rufus::Scheduler.new
 3 
 4 puts Time.new
 5 puts 'process begin----'
 6 scheduler.at '2013-10-25 08:39:36 -0700' do
 7   puts Time.new
 8   puts 'Time is up'
 9   puts 'order pizza'
10 end
11 scheduler.join

輸出結果:

1 2013-10-25 08:38:09 -0700
2 process begin----
3 2013-10-25 08:39:36 -0700
4 Time is up
5 order pizza

如果設置的at時間在程序運行之前,比如設置的at時間為:2013-10-25 08:39:36。程序運行時的時間為2013-10-25 08:34:36。那麼程序運行時候就執行設置的事件

舉個例子:

 1 require 'rufus-scheduler'
 2 scheduler = Rufus::Scheduler.new
 3 
 4 puts Time.new
 5 puts 'process begin----'
 6 scheduler.at '2013-10-25 08:39:36 -0700' do
 7   puts Time.new
 8   puts 'Time is up'
 9   puts 'order pizza'
10 end
11 scheduler.join

輸出結果:

1 2013-10-25 08:45:53 -0700
2 process begin----
3 2013-10-25 08:45:53 -0700
4 Time is up
5 order pizza

2:在從此刻開始間隔多長時間執行

1 require 'rufus-scheduler'
2 scheduler = Rufus::Scheduler.new
3 
4 puts Time.new
5 scheduler.in '1s' do
6   puts Time.new
7   puts 'Hello...Word'
8 end
9 scheduler.join

輸出結果:

1 2013-10-25 02:56:02 -0700
2 2013-10-25 02:56:03 -0700
3 Hello... Word

3:在特定時間間隔內執行

1 require 'rufus-scheduler'
2 scheduler = Rufus::Scheduler.new
3 
4 puts Time.new
5 scheduler.every '1s' do
6   puts Time.new
7   puts 'Hello... Word'
8 end
9 scheduler.join

輸出結果:

 1 2013-10-25 03:05:38 -0700
 2 2013-10-25 03:05:39 -0700
 3 Hello... Word
 4 2013-10-25 03:05:41 -0700
 5 Hello... Word
 6 2013-10-25 03:05:42 -0700
 7 Hello... Word
 8 2013-10-25 03:05:43 -0700
 9 Hello... Word
10 2013-10-25 03:05:44 -0700
11 Hello... Word

4:在特定的cron時間執行

 1 require 'rufus-scheduler'
 2 scheduler = Rufus::Scheduler.new
 3 
 4 puts Time.new
 5 puts 'process begin----'
 6 scheduler.cron '/1 * * * *' do
 7   puts Time.new
 8   puts 'Hello word'
 9 end
10 scheduler.join

輸出結果:

 1 2013-10-25 08:57:46 -0700
 2 process begin----
 3 2013-10-25 08:58:00 -0700
 4 Hello word
 5 2013-10-25 08:59:00 -0700
 6 Hello word
 7 2013-10-25 09:00:00 -0700
 8 Hello word
 9 2013-10-25 09:01:00 -0700
10 Hello word
11 2013-10-25 09:02:00 -0700
12 Hello word
13 2013-10-25 09:03:00 -0700
14 Hello word

至於cron的使用方法,請參考cron相關文章。

此文只是Ruby定時任務的初步,在下一篇中和大家一起進入深一步的分析。

Copyright © Linux教程網 All Rights Reserved