ruby on rails 之 延時執行代碼

 最近因爲項目需要,所以找了一下關與代碼延時執行的問題.

在網上找的大部分的資料都是關於定時任務.這個很好弄,只需要安裝一個gem包就完全可以做了.但是,我需要的是在程序接收到這個消息的時候延時5s或者10s發送.並且不妨礙整個程序其餘的功能.
通過朋友的提示 我在rubygem.org這裏找到了想要的gem. 
 
  1. gem "rufus-scheduler" 
這個包就完全可以實現這個功能.
下面看一下用法.
首先安裝這個gem.
 
  1. gem "rufus-scheduler" 
然後,
  1. bundle install
可以用了.就這麼簡單.
具體的代碼可以這麼寫.
  
  1. def send_sms 
  2.     require 'rufus/scheduler' 
  3.      
  4.     user_list_id = params[:users_send_list_id
  5.     sms_channel_id = params[:send_sms_channel_id
  6.     sms_text = params[:send_contents_value
  7.      
  8.    sms_text = sms_text.split("#"
  9.    sendSmsTask(user_list_id,sms_channel_id,sms_text[0],part)#定時前調用的方法 
  10.     #啓動定時器 
  11.     scheduler = Rufus::Scheduler.start_new 
  12.     scheduler.in '30s' do 
  13.       sendSmsTask(user_list_id,sms_channel_id,sms_text[1],part)#需要調用的方法 
  14.     end 
  15.   end 
  
看完了,趕快去試試吧.(歡迎各位提出更好的方法.大家一起討論.)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章