используя параллельную обработку в Google App Engine для Java - PullRequest
1 голос
/ 06 января 2012

У меня есть ряд повторяющихся заданий, где для каждого задания приходится посещать много разных сайтов - от 100 до 10000 сайтов на задание.

Из того, что я прочитал в Документации Google для API очереди задач,задача может использоваться для отправки запроса на внутренний относительный URL-адрес с некоторыми параметрами (которые определены как часть задачи).

Я хочу иметь возможность контролировать поток, например, иметь один 'очередь », в которой одновременно посещаются только 50 сайтов как часть одной работы, а затем - одна более быстрая очередь, где для одной работы одновременно посещается до 5000 сайтов ...

Как выполнить вышеизложенное в Google AppEngine для Java?

Единственное решение, о котором я могу подумать, - это инфраструктура параллельной обработки, такая как Korus, но она не предоставляет мне уровень контроля, обеспечиваемый очередями задач ...и / или лучший способ выполнить то, что я хочу?

1 Ответ

2 голосов
/ 06 января 2012

Arvind,

Этого легко добиться, просто настроив свои очереди.Вот соответствующая документация о том, как настроить скорость процесса: http://code.google.com/appengine/docs/java/config/queue.html#Defining_Push_Queues_and_Processing_Rates

В итоге, есть несколько атрибутов, которые помогут вам контролировать, как ваше приложение будет обрабатывать задачу в очереди.Это: скорость, размер корзины, максимальный параллельный запрос.Каждый из них позволит вам ограничить скорость обработки.Имейте в виду, что App Engine использует алгоритм токенов для контроля скорости выполнения задачи.

В первом примере вы можете контролировать одновременное посещение 50 сайтов, просто установив <max-concurrent-requests>50</max-concurrent-requests>

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

Надеюсь, это поможет!

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