При создании труб, работающих с большим количеством item' ов, неминуемо возникают следующие ошибки при отладке:
- Preview Failed Bad Gateway
Данное сообщение означает что пайп не ожет обработать такое количество записей (item'ов). По моим ощущениям, для работоспособности yahoo pipes необходимо, чтобы пайп содержал не больше 140-160 записей (зависит от количества и качества Regex'ов).
Итак, как ограничить число записей в трубе? Правильно, мы будем использовать операторы Tail и Truncate.
Truncate (N) - берем N записей с начала.
Пример: 1,2,3,4,5,6,7,8,9,10,11,.. Результат: 1,2,3,4,5
Tail (N) - взять N записей с конца.
Пример: 1,2,3,4,5,6,7,8,9,10,11. Результат: 10,11
А как нам поступить чтобы получить произвольный кусок исходного фида? Это легко достигается при помощи комбинаций операторов Truncate и Tail.
Комбинируем Truncate (N) и Tail (N).
Берем записи с 5-й по 7 включительно.
Пример: 1,2,3,4,5,6,7,8,9,10,11. Результат: 5,6,7
В заключение хочется привести пример в котором необходимо истользавать операторы Truncate и Tail. Допустим мы пишем трубу для парсинга сайта на wordpress'е.
- Получаем список страниц на которых находятся посты из pagenavi (предположим получили 100 страниц).
- Обрабатывая каждую страницу на которой анонсы допустим 5 записей мы получим порядка 5*100=500 ссылок на полные записи.
- Обработав каждую запись (выдрав неободимый текст и другие элементы) в идеале получим фид состоящий из 500 полных постов.
Но этим словам "в идеале" не суждено сбыться - Yahoo Pipes захлебнется от такого количества информации. Поэтому, после первого пункта необходимо вставить Truncate (25) и мы получин на выходе 25*5=125 постов в фиде. Далее Truncate (50) -> Tail (25) получаем 125 следующих постов и т.д.