Rails Job 配置Delayed Job使用

在Rails里面實現(xiàn)延遲任務,選擇Delayed Job 的 active record方案(使用active record,不需要額外安裝軟件支撐)昂验;
延遲任務數據保存在Rails active record適配的數據庫中缘滥;
在新版本的Rails中,延遲任務已經統(tǒng)一接口到Rails Job框架中惩坑;直接使用Rails Job框架如绸,配置delayed job適配器即可使用;

配置Gemfile

gem "daemons"
gem 'delayed_job'
gem 'delayed_job_active_record'

bundle install

配置config/application.rb

config.active_job.queue_adapter = :delayed_job

自定義worker選項

創(chuàng)建config/initializers/delayed_job_config.rb

Delayed::Worker.destroy_failed_jobs = false #如果任務執(zhí)行失敗旭贬,任務記錄是否從數據庫中刪除
Delayed::Worker.sleep_delay = 60    #如果沒有任務怔接,后臺worker休眠時間;也可以設置Delayed::Worker.delay_jobs = false 使worker不休眠
Delayed::Worker.max_attempts = 3 #任務失敗后最大重試次數
Delayed::Worker.max_run_time = 10.minutes # 任務最大執(zhí)行時間
Delayed::Worker.read_ahead = 10   #每次從數據庫中取多少條任務數據
Delayed::Worker.default_queue_name = 'default'  #默認隊列名稱
Delayed::Worker.delay_jobs = !Rails.env.test?   #如果沒有任務后臺worker是否需要休眠稀轨,如果需要扼脐,將休息sleep_delay秒
Delayed::Worker.raise_signal_exceptions = :term # Delayed::Worker.raise_signal_exceptions = :term 進程終結的時候拋出SignalException;從而使得正在進行的任務中斷和unlocked奋刽;從而該任務可以之后被其他worker重新執(zhí)行
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'delayed_job.log'))   #Log信息

創(chuàng)建任務數據表結構

rails generate delayed_job:active_record
rake db:migrate

創(chuàng)建一個任務

rails generate job xxx
#  打開app/jobs/xxx_job.rb
...
def perform(*args)
  Rails.logger.info("xxx job args is #{args}")
end
...

啟動后臺進程

RAILS_ENV=production bin/delayed_job start
#其他命令:
# RAILS_ENV=production bin/delayed_job restart
# RAILS_ENV=production bin/delayed_job stop
# 等等

測試

# rails c 后
XxxJob.set(wait:10.second).perform_later("Test job")
# 10秒后就會在log文件里面發(fā)現(xiàn)輸出日志

參考資料

Rails 4.2 新增后端任務框架 - Active Job
Active Job Basics
delayed_job on github

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末瓦侮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子佣谐,更是在濱河造成了極大的恐慌肚吏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狭魂,死亡現(xiàn)場離奇詭異罚攀,居然都是意外死亡,警方通過查閱死者的電腦和手機雌澄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門陡鹃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宴抚,“玉大人,你說我怎么就攤上這事∑非妫” “怎么了表鳍?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵蝌诡,是天一觀的道長矗晃。 經常有香客問我,道長畦浓,這世上最難降的妖魔是什么痹束? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮宅粥,結果婚禮上参袱,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好抹蚀,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布剿牺。 她就那樣靜靜地躺著,像睡著了一般环壤。 火紅的嫁衣襯著肌膚如雪晒来。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天郑现,我揣著相機與錄音湃崩,去河邊找鬼。 笑死接箫,一個胖子當著我的面吹牛攒读,可吹牛的內容都是我干的。 我是一名探鬼主播辛友,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼薄扁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了废累?” 一聲冷哼從身側響起邓梅,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邑滨,沒想到半個月后日缨,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡掖看,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年匣距,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乙各。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡墨礁,死狀恐怖,靈堂內的尸體忽然破棺而出耳峦,到底是詐尸還是另有隱情,我是刑警寧澤焕毫,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布蹲坷,位于F島的核電站,受9級特大地震影響邑飒,放射性物質發(fā)生泄漏循签。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一疙咸、第九天 我趴在偏房一處隱蔽的房頂上張望县匠。 院中可真熱鬧,春花似錦、人聲如沸乞旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兰粉。三九已至故痊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間玖姑,已是汗流浹背愕秫。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留焰络,地道東北人戴甩。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像闪彼,于是被迫代替她去往敵國和親甜孤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理备蚓,服務發(fā)現(xiàn)课蔬,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Awesome Ruby Toolbox Awesome A collection of awesome Ruby...
    debbbbie閱讀 2,870評論 0 3
  • 在學習rails時郊尝,我們有必要了解rails程序中的目錄結構二跋。rails對于不同的文件,不同的代碼存放在什么樣的文...
    vito1994閱讀 5,991評論 1 17
  • 模型 一流昏、Active Record 基礎介紹Models扎即,數據庫持久性以及Active Record模式 Act...
    廖馬兒閱讀 6,523評論 0 2
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,811評論 6 342