2016-12-22 3 views
1

이상적으로 두 가지 작업이 필요합니다. 하나는 외부 URL에서 데이터를 수집하고 다른 하나는이를 처리하기위한 것입니다.Rufus Scheduler jobs 간의 변수 전달

외부 시스템의 부하를 줄이기 위해 처리 할 때마다 데이터를 수집하고 싶지 않습니다. 출력 데이터는 규칙 엔진이 제 시간에 맞추어 처리되기 때문에 정기적으로 처리해야합니다.

그러나, 나는 두 번째에 사용되는 최초의 스케줄러에서 출력 배열을 전달하는 방법을 정말 잘 모르겠어요 ... 여기 ... 내가 할 노력하고있어의 예

SCHEDULER.every '10m', :first_in => 0 do |job| 
url = http://sample.com 
output = [] 
open (url) do |data| 
data.each_line { |line| output.push (line) } 
end 

SCHEDULER.every '1m', :first_in => 0 do |job| 
#Code to process output (from first scheduler) 
end 

도움을 주시면 대단히 감사하겠습니다!

감사

답변

1

당신은 (여기 $output) 전역 변수를 사용하고 동일한 뮤텍스를 사용하는 작업을 말할 수있는 (여기 "pipe0을"그냥 무작위 이름 나는 선택했다). 같은

뭔가 :

SCHEDULER.every '10m', mutex: 'pipe0' do |job| 
    $output.concat(open('http://www.example.org').readlines) 
end 

SCHEDULER.every '1m', mutex: 'pipe0' do |job| 
    if $output 
    # do something with the output 
    end 
    $output = nil 
end 
+1

얼마나 멋진가 루퍼스 스케줄러의 저자는 내 질문에 대답해야하는 - 시간에 모든 너무. 감사! 정말 도움이 - 전역 변수를 보았지만 'mutex'섹션을 스케줄러 필드에 추가하지 않았습니다. 건배. –