Как мне запланировать много записей Google Search в течение дня? - PullRequest
0 голосов
/ 15 января 2011

В настоящее время мой скрипт Nokogiri перебирает SERP Google, пока не найдет позицию целевого сайта. Это делается для каждого ключевого слова для каждого веб-сайта, который указывает каждый пользователь (количество пользователей и ключевые слова, которые они могут отслеживать, ограничено).

Прямо сейчас, он запускается в виде граблей, которые каждый день жестко распределяются, и объединяет все скрепы сразу, просматривая все сайты в базе данных. Но меня беспокоит масштабируемость и насыщенность Google пакетом запросов.

Мне бы хотелось решение, которое масштабируется и может выполнять эти операции в течение дня. Я не уверен, какое решение доступно или что я действительно ищу.

Примечание : количество сайтов / ключевых слов меняется со дня на день, когда пользователи добавляют и удаляют свои сайты и ключевые слова. Я не хочу, чтобы этот вопрос был слишком излишним, но для этого ли можно использовать Beanstalkd / Stalker (очереди заданий)?

Ответы [ 4 ]

0 голосов
/ 15 января 2011

Вам нужно будет сбалансировать две проблемы: Масштабируемость для большого количества пользователей по сравнению с Google, закрывающим вас за просмотр в нарушение условий их использования.

Таким образом, ваша система должна будет иметь возможность распределять задачи по различнымразные IP-адреса, чтобы скрыть ваши массовые расчистки, что предполагает как минимум два уровня очередей.Один для управления всеми заданиями и отправки их на каждый отдельный IP-адрес для последующего поиска и сбора результатов и очередей на каждом отдельном компьютере для хранения запрошенных поисков, пока они не будут выполнены и результаты возвращены.

Понятия не имею, чтоПороговые значения Google (я уверен, что они этого не рекламируют), но их превышение и обрезание, очевидно, будут разрушительными для того, что вы пытаетесь сделать, поэтому ваша простая задача с циклическим рейком - это именно то, что вы не должны делать после определенного числапользователей.

Так что, да, используйте какую-то очередь, но понимаете, что вы, вероятно, преследуете цель, отличную от типичной цели очереди, в том, что вы хотите намеренно задерживать задания, а не разгружать слово, чтобы избежать задержек пользовательского интерфейса,Таким образом, вы будете искать способы замедлить очередь, а не просто выполнять задание за заданием, когда они поступают в очередь.

Таким образом, основываясь на кратком осмотре DelayedJob и BackgroundJobs, похоже, что DelayedJob имеет то, что выпонадобится с атрибутом run_at.Но я только размышляю здесь, и я уверен, что эксперт скажет больше.

0 голосов
/ 15 января 2011

Определенно есть несколько библиотек фоновых заданий, которые могут работать.

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

0 голосов
/ 15 января 2011

SaaS-решение: http://momentapp.com/ «Запуск отложенных заданий с запланированными http-запросами» - отказ от ответственности а) в бета-версии b) Я не связан с этой службой

0 голосов
/ 15 января 2011

Если я понимаю правильность, кажется, что один из этих инструментов может соответствовать всем требованиям:

Задержка_движения: https://github.com/tobi/delayed_job

или

BackgroundJobs: http://codeforpeople.rubyforge.org/svn/bj/trunk/README

Я использовал оба из них, и с ними было легко работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...