2014-10-17 3 views
1

rufus-scheduler를 사용하여 백그라운드 작업을 실행하고 싶습니다. 저는 현재 사이드 키크 (Sidekiq)의 직원 용 다이노 (dyno)를 가지고 있으며, 이상적으로는 그 과정에 일정을 잡고 싶습니다. https://github.com/jmettraux/rufus-scheduler#so-railsheroku에서 작업자 dyno에 rufus-scheduler 일정을 설정합니다.

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 

은 작업자 프로세스 절전 모드로 전환 (? 다이노) (그리고 그것으로 스케줄러를) 조심하십시오.

EDIT 1

팁 : 당신이있어 다이노를 식별하기 위해 $의 DYNO 변수 (https://devcenter.heroku.com/articles/dynos#local-environment-variables)를 사용할 수 있습니다.

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

xx 음, 그게 문질러 야, 내가 어떤 프로세스가 스케줄러를 호출하는지 결정할 수 있을까? 나는 노동자 다이노들이 잠들지 않는다고 확신한다. 그러나 당신이 더 많은 정보를 가지고 있다면, 감사 할 것입니다. 웹 측면에서, 나는 잠들 것으로 생각하지 않는 2x Web Dyno를 사용하고 있습니다. – timpone

+0

그래서 질문은 루퍼스 스케줄러 나 레일과는 아무런 관련이 없습니다 ... – jmettraux

+0

나는 생각하지만 모두가 의견을 말할 자격이 있습니다 – timpone