Как получить несколько каналов одновременно
Я новичок в 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.