[英]Setting up a rake task with Resque Scheduler - Rails 4
我正在使用Resque Scheduler gem在Rails 4上。
我還使用了站點地圖生成器 gem來動態生成我的站點地圖。
我在用Resque Scheduler找出計划rake任務的最佳方法時遇到了麻煩。 Sitemaps生成器建議在任何時候使用 ,但我假設resque調度程序可以完成相同的操作(如果不需要,則不需要安裝其他gem)。
有人知道如何設置嗎?
我想每5小時運行rake sitemap:refresh:no_ping
。
我當時想我只是安排一個后台作業並從那里運行它:
# resque_schedule.yml
update_sitemap:
every: 5h
class: "SitemapUpdater"
description: "This job refreshes the sitemap"
# sitemap_updater.rb
class SitemapUpdater
@queue = :sitemap_queue
def self.perform
# run rake task here
end
end
...但是,我不確定這是否是一個好習慣。 任何建議將不勝感激。
我認為您的方法沒有問題,您只需要知道在每次部署過程中都會重置調度程序,因此,如果進行頻繁部署,則計划的作業可能稍后運行,甚至根本不運行, 如記錄所示 :
重要提示:Rufus每種語法都會從部署時刻開始計算作業的調度時間,從而導致每次部署都需要重置調度時間,因此最好僅將它用於頻繁的作業(例如每10-30分鍾一次),否則-如果您每20小時使用一次,並且每天部署兩次,那么它將在部署后的20個小時內調度作業,從而導致永遠無法運行該作業。
您還可以從系統cron本身運行rake ,這是一個更輕量級的解決方案,因為它根本不需要調度程序gem,只需要rake任務,並且可以及時可靠地進行調度。
請參閱此答案,以在crontab
設置“每5小時”的頻率,如果將RVM用於ruby項目,則可能還需要研究RVM包裝器 (在這種情況下,必須使用RVM包裝器調用rake,例如,調用/home/deploy/.rvm/wrappers/ruby-2.3.0@mygemset/rake
而不是rake
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.