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

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

Для разбора каналов я начал использовать корма Zirra.

Для получения нескольких каналов одновременно, Feed zirra имеет эту функцию

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

Если у меня 100 фидов, эта процедура занимает некоторое время для индексации 100-го фида так,

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

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

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

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

Другие вопросы по тегам