簡體   English   中英

使用Resque Scheduler設置rake任務-Rails 4

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM