在 Rufus Scheduler 作业之间传递变量
Passing variables between Rufus Scheduler jobs
理想情况下我需要两份工作。一个从外部收集数据 URL,另一个处理数据。
我不想在每次处理时都收集数据以减少外部系统的负载。输出数据需要定期处理,因为它是一个专注于时间的规则引擎。
但是,我不太确定如何将第一个调度程序的输出数组传递给第二个调度程序...这是我正在尝试做的事情的示例...
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
任何帮助将不胜感激!
谢谢
您可以使用一个全局变量(此处 $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
理想情况下我需要两份工作。一个从外部收集数据 URL,另一个处理数据。
我不想在每次处理时都收集数据以减少外部系统的负载。输出数据需要定期处理,因为它是一个专注于时间的规则引擎。
但是,我不太确定如何将第一个调度程序的输出数组传递给第二个调度程序...这是我正在尝试做的事情的示例...
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
任何帮助将不胜感激!
谢谢
您可以使用一个全局变量(此处 $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