溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ruby 定時(shí)任務(wù)之一(初步嘗試)

發(fā)布時(shí)間:2020-07-28 02:30:09 來(lái)源:網(wǎng)絡(luò) 閱讀:480 作者:Steven__Fan 欄目:編程語(yǔ)言

     最近工作需要用到定時(shí)任務(wù)。原來(lái)寫java的時(shí)候也用到過(guò)類似的Scheduler的功能。

     Ruby語(yǔ)言中也有同樣功能的工具。rufus-scheduler。下面介紹一下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可以指定在特定時(shí)間時(shí)執(zhí)行,在從此刻開(kāi)始間隔多長(zhǎng)時(shí)間執(zhí)行,在特定時(shí)間間隔內(nèi)循執(zhí)行,在特定的cron時(shí)間執(zhí)行。例子如下:

   1:指定特定時(shí)間(或者超過(guò)指定時(shí)間)執(zhí)行 

 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

輸出結(jié)果:

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

      如果設(shè)置的at時(shí)間在程序運(yùn)行之前,比如設(shè)置的at時(shí)間為:2013-10-25 08:39:36。程序運(yùn)行時(shí)的時(shí)間為2013-10-25 08:34:36。那么程序運(yùn)行時(shí)候就執(zhí)行設(shè)置的事件

舉個(gè)例子:

   

 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

輸出結(jié)果:

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:在從此刻開(kāi)始間隔多長(zhǎng)時(shí)間執(zhí)行

    

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

輸出結(jié)果:

 

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

 3:在特定時(shí)間間隔內(nèi)執(zhí)行

     

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

輸出結(jié)果:

 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時(shí)間執(zhí)行

 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

輸出結(jié)果:

 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的使用方法,請(qǐng)參考cron相關(guān)文章。

 

此文只是Ruby定時(shí)任務(wù)的初步,在下一篇中和大家一起進(jìn)入深一步的分析。

 

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI