Обновление RSS-каналов с интервалами почти в реальном времени - PullRequest
4 голосов
/ 06 июля 2011

У меня есть система, которая выбирает несколько сотен RSS-каналов.В настоящее время у них есть 10-минутный цикл обновления, но я бы предпочел сделать это быстрее.Какова стратегия получения источников RSS с интервалами почти в реальном времени / push?

Некоторые решения, с которыми я сталкивался:

  • делать выборку за 1 минуту;если изменений нет, выберите снова 2, затем 4, затем 8 и т. д.
  • найдите средний интервал между обновлениями / дисперсию канала RSS и поместите их в корзину (этот файл обновляется каждые3 минуты, поэтому проверяйте каждую 1 минуту, каждую неделю обновляйте, проверяйте каждый день и т. Д.)

Ответы [ 3 ]

2 голосов
/ 08 июля 2011

Нет способа сделать "тягу" быстрой и эффективной. Вы будете либо опрашивать чаще (и будете менее эффективными), либо будете более эффективными, опрашивая реже.

Единственный способ получить опыт практически в реальном времени - это опросить в нужное время:)

К счастью, некоторые издатели (все больше и больше!) Используют PubSubHubbub для обновления своих каналов и информирования подписчиков. Другие службы, такие как Superfeedr (я работаю в Superfeedr), используют различные методы, чтобы узнать, когда лучше всего выбирать канал (на основе исторических обновлений, обновлений в связанных каналах ... и т. Д.).

0 голосов
/ 11 июля 2011

Я использовал что-то вроде тебя в первом варианте. Начните со времени по умолчанию перед получением канала. Если найдены новые предметы, уменьшите период ожидания на 10%, в противном случае увеличьте на 10%. Выполняйте эту адаптацию с каждым обновлением, и система подстраивается.

Вы можете использовать разные проценты, например, уменьшите время, чтобы лучше реагировать на изменение частоты обновления.

Включите минимальный и максимальный промежуток времени для ожидания в заданном диапазоне.

Это не идеально, но было достаточно хорошо для меня.

0 голосов
/ 06 июля 2011

Хотя это только часть решения, вы также можете (если канал подается по HTTP) проверить заголовки Cache-Control и Expires RSS-канала для подсказок о том, как часто вы должны получать канал.

...