2014-10-17 2 views
1

Я хотел бы использовать rufus-scheduler для запуска фоновой задачи. В настоящее время у меня есть рабочий динамик для Sidekiq и идеально подходит для планирования этого процесса. Тестирование Руфус-планировщика, как в документации на https://github.com/jmettraux/rufus-scheduler#so-railsРасписание rufus-scheduler для рабочего dyno on heroku

require 'rufus-scheduler' 

# Let's use the rufus-scheduler singleton 
# 
s = Rufus::Scheduler.singleton 


# Stupid recurrent task... 
# 
s.every '1s' do 
    Rails.logger.info "hello, it's #{Time.now}" 
end 

Он выходит как на веб и работника, и я хотел бы, чтобы использовать рабочий процесс. Как мне это достичь?

выход Образец:

2014-10-17T00:30:29.382689+00:00 app[web.1]: hello, it's 2014-10-17 00:30:29 +0000 
2014-10-17T00:30:29.609192+00:00 app[worker.1]: hello, it's 2014-10-17 00:30:29 +0000 

ответ

1

Что-то вроде следующего может сделать это:

if running_on_worker_process? # you have to implement that one yourself. 
    require 'rufus-scheduler' 
    s = Rufus::Scheduler.singleton 
    s.every '1d' do 
    Rails.logger.info "taking out the garbage..." 
    end 
end 

Остерегайтесь ваш рабочий процесс (DYNO?) Собирается спать (и планировщик с ним).

EDIT 1

Подсказка: вы можете использовать переменную $ Dyno (https://devcenter.heroku.com/articles/dynos#local-environment-variables), чтобы определить, какие Dyno вы на.

if ENV['DYNO'].match(/^worker\./) 
    # ... 
end 
+0

thx, ну это же трение, как бы определить, какой процесс вызывает планировщик? Я уверен, что рабочие динозавров не ложатся спать. Но если у вас будет больше информации, я буду благодарен. На веб-стороне я использую 2x Web Dyno, который, как я думаю, не ложится спать. – timpone

+0

Итак, вопрос не имеет никакого отношения к rufus-scheduler или rails ... – jmettraux

+0

Я думаю, что он делает, но каждый имеет право на мнение – timpone