【问题标题】:Jobs update with Dashing and Ruby使用 Dashing 和 Ruby 更新工作
【发布时间】:2016-04-08 23:04:32
【问题描述】:

我使用 Dashing 来监控趋势和网站统计数据。 我创建了一个工作来检查 GooglesNews 趋势和 Twitter 趋势。

数据显示得很好,但是,它们在第一次加载时出现,然后确实进行了更多更新。有 twitter_trends.rb 的代码:

require 'nokogiri'
require 'open-uri'

url = 'http://trends24.in/france/~cloud'

data = Nokogiri::HTML(open(url))
list = data.xpath('//ol/li')

tags = list.collect do |tag|
  tag.xpath('a').text
end

tags = tags.take(10)
tag_counts = Hash.new({value: 0})

SCHEDULER.every '10s' do
  tag = tags.sample
  tag_counts[tag] = {label: tag}

  send_event('twitter_trends', {items: tag_counts.values})
end

我认为我使用了糟糕的“rufus-scheduler”来安排我的工作作业https://gist.github.com/pushmatrix/3978821#file-sample_job-rb

如何让数据定期正确更新?

【问题讨论】:

  • 为什么 rufus-scheduler 不好? Romain, pourquoi qualifying-tu rufus-scheduler de mauvais?
  • 我的意思是我不知道如何使用它。我不知道我的数据是如何定期更新的。 rufus-scheduler 很好:)

标签: ruby-on-rails ruby dashing rufus-scheduler


【解决方案1】:

您的调度程序看起来不错,但看起来您正在对网站进行一次调用:

data = Nokogiri::HTML(open(url))

但再也不会调用它了。您是否打算只检查一次该站点以及对该站点的初始处理?

我假设您确实希望将更多逻辑包装到调度程序循环中 - 只有在调度作业命中时才会重新运行其中的内容。

【讨论】:

  • 我的问题在这里。我不想打电话只会做一次。如果我将 SCHEDULER.every ' 10s ' do 移动到 data = HTML :: Nokogiri (open ( url) ) 上,则脚本不再有效。
  • 您在日志文件中遇到了什么错误?可能值得在其中添加一个“puts tag.to_s”之类的东西,它也会显示在日志中,以便您更清楚地看到它。
【解决方案2】:

当您在调度程序中涵盖所有内容时,您只需每 10 秒采集一个样本 (http://ruby-doc.org/core-2.2.0/Array.html#method-i-sample),然后将其添加到 tag_counts。这是每次清除标签。关于调度程序要记住的一点是,它每次运行时基本上都是一张白纸。我建议循环遍历标签并将它们添加到tag_counts,而不是采样。每次运行调度程序时,采样都是不必要的,因为您将其减少到 10。

【讨论】:

    【解决方案3】:

    如果我像这样移动 SCHEDULER(在顶部的 url 之后),它可以工作,但是每 10 秒随机出现一个项目。

    require 'nokogiri'
    require 'open-uri'
    
    url = 'http://trends24.in/france/~cloud'
    
    SCHEDULER.every '10s' do
    
    data = Nokogiri::HTML(open(url))
    list = data.xpath('//ol/li')
    
    tags = list.collect do |tag|
      tag.xpath('a').text
    end
    
    tags = tags.take(10)
    tag_counts = Hash.new({value: 0})
    
      tag = tags.sample
      tag_counts[tag] = {label: tag}
    
      send_event('twitter_trends', {items: tag_counts.values})
    end
    

    如何显示10个项目的列表,并定期更新?

    【讨论】:

    • 有人可以帮帮我吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2014-11-17
    • 2013-05-24
    相关资源
    最近更新 更多