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