dimaseo Dimaseo

Yahoo Pipes - Большие и сложные трубы

🔎 Yahoo Pipes
23 мар 2010

При создании труб, работающих с большим количеством item' ов, неминуемо возникают следующие ошибки при отладке:

  • Preview Failed Bad Gateway

Данное сообщение означает что пайп не ожет обработать такое количество записей (item'ов). По моим ощущениям, для работоспособности yahoo pipes необходимо, чтобы пайп содержал не больше 140-160 записей (зависит от количества и качества Regex'ов).

Итак, как ограничить число записей в трубе? Правильно, мы будем использовать операторы Tail и Truncate.

Truncate (N) - берем N записей с начала.

Truncate Yahoo Pipes

Пример: 1,2,3,4,5,6,7,8,9,10,11,.. Результат: 1,2,3,4,5

Tail (N) - взять N записей с конца.

Tail Yahoo Pipes

Пример: 1,2,3,4,5,6,7,8,9,10,11. Результат: 10,11

А как нам поступить чтобы получить произвольный кусок исходного фида? Это легко достигается при помощи комбинаций операторов Truncate и Tail.

Комбинируем Truncate (N) и Tail (N).

Берем записи с 5-й по 7 включительно.

Совместное использование truncate и tail в трубах Pipes

Пример: 1,2,3,4,5,6,7,8,9,10,11. Результат: 5,6,7

В заключение хочется привести пример в котором необходимо истользавать операторы Truncate и Tail. Допустим мы пишем трубу для парсинга сайта на wordpress'е.

  1. Получаем список страниц на которых находятся посты из pagenavi (предположим получили 100 страниц).
  2. Обрабатывая каждую страницу на которой анонсы допустим 5 записей мы получим порядка 5*100=500 ссылок на полные записи.
  3. Обработав каждую запись (выдрав неободимый текст и другие элементы) в идеале получим фид состоящий из 500 полных постов.

Но этим словам "в идеале" не суждено сбыться - Yahoo Pipes захлебнется от такого количества информации. Поэтому, после первого пункта необходимо вставить Truncate (25) и мы получин на выходе 25*5=125 постов в фиде. Далее Truncate (50) -> Tail (25) получаем 125 следующих постов и т.д.