Как получить несколько каналов одновременно

Я новичок в ruby ​​on rails и только что начал смотреть учебные пособия по рельсам.

Для парсинга фидов я начал использовать фид zirra.

Чтобы получить несколько каналов одновременно, у feedzirra есть эта функция.

feed_urls = ["http://feeds.feedburner.com/PaulDixExplainsNothing",
"http://feeds.feedburner.com/trottercashion"]
feeds = Feedzirra::Feed.fetch_and_parse(feed_urls)

Если у меня есть 100 каналов, эта процедура занимает некоторое время, чтобы проиндексировать 100-й канал, поэтому

Как проанализировать получение всех этих, скажем, 100 каналов одновременно?

Ждем вашей помощи и поддержки


person gkolan    schedule 31.08.2010    source источник


Ответы (1)


Вы можете попробовать объединить Feedzirra для разбора фида и Typhoeus для параллелизма, например:

#!/usr/bin/env ruby
require 'rubygems'
require 'typhoeus'
require 'feedzirra'

feed_urls = ["http://feeds.feedburner.com/PaulDixExplainsNothing", "http://feeds.feedburner.com/trottercashion"]

hydra = Typhoeus::Hydra.new
feeds = {}

feed_urls.each do |feed|
        r = Typhoeus::Request.new(feed)
        r.on_complete do |response|
                feeds[r.url] = Feedzirra::Feed.parse(response.body)
        end
        hydra.queue r
end
hydra.run
puts feeds.inspect

Идея состоит в том, чтобы использовать гидру для параллелизма. Затем вам решать, делать ли что-то еще, кроме как проверять или заполнять переменную каналов.

person hellvinz    schedule 31.08.2010