在Rufus Scheduler作业之间传递变量

时间:2016-12-22 11:15:18

标签: ruby variables rufus-scheduler

理想情况下,我需要两份工作。一个用于从外部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

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分: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