2016-05-21 2 views
0

Я нахожусь на Rails 4, используя драгоценный камень Resque Scheduler.Настройка рейк-задачи с помощью Resque Scheduler - Rails 4

Я также использую жемчужину sitemap generator, чтобы динамически генерировать мою карту сайта.

У меня возникли проблемы с поиском наилучшего способа запланировать задачу рейка с помощью планировщика resque. Генератор sitemap рекомендует whenever, но я предполагаю, что планировщик resque может выполнить одно и то же (не хотите устанавливать другой камень, если мне не нужно).

Кто-нибудь знает, как это установить?

Хотел бы запустить rake sitemap:refresh:no_ping каждые 5 часов.

Я думал, я бы просто запланировать фоновое задание и запустить его оттуда:

# 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 

... однако, я не уверен, что это хорошая практика. Любые советы будут высоко ценится.

+0

вам лучше использовать [linux cron] (https://en.wikipedia.org/wiki/Cron). [this] (https://stackoverflow.com/questions/11571789/rake-task-with-cron-job?rq=1) может помочь вам –

ответ

0

Я не вижу проблемы с вашим подходом, вы просто должны знать, что планировщик сбрасывается во время каждого развертывания, поэтому, если вы часто посещаете развертывание, запланированные задания могут запускаться позже или даже не запускаться вообще, as documented:

ВАЖНО: Руфус каждый синтаксис будет вычислять задания времени, начиная с момента внедрения, в результате сброса времени расписания на каждом развертывании о планировании, так что это, вероятно, хорошая идея, чтобы использовать его только для частых рабочих мест (например, каждый 10-30 минут), в противном случае - когда вы используете что-то примерно каждые 20 часов и разворачиваете раз в два раза в день - он будет планировать задание на 20 часов после развертывания, в результате чего работа никогда не будет запущена.

Вы также можете запустить грабли от самой системы хрон, которая является еще более легким решением, поскольку это не требует планировщика драгоценных камней на всех, только задачу грабель, и будет надежно запланировано во время.

См., Например, this answer для настройки частоты «каждые 5 часов» в crontab, и вам также может понадобиться изучить RVM wrappers, если вы используете RVM для своего рубинового проекта (в этом случае вы должны использовать рейк с использованием оберток RVM, например, вызов /home/deploy/.rvm/wrappers/[email protected]/rake вместо rake) ,

Смежные вопросы