【问题标题】:Passing variables between Rufus Scheduler jobs在 Rufus Scheduler 作业之间传递变量
【发布时间】:2016-12-22 11:15:17
【问题描述】:

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

任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: ruby variables rufus-scheduler


    【解决方案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
    

    【讨论】:

    • 让 Rufus Scheduler 的作者回答我的问题真是太好了 - 也很快。谢谢!真的很有帮助——我查看了全局变量,但没有将“互斥”部分添加到调度程序字段中。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多