Система очередей, которая поддерживает пакетное задание (например, несколько заданий для одного работника одновременно) - PullRequest
3 голосов
/ 04 марта 2012

Я ищу систему очередей, которая могла бы поддерживать следующий сценарий:

  • Клиент добавляет задание - чтобы проверить, сколько лайков Facebook имеет определенный URL (URL1);
  • Клиент добавляет еще одно задание - проверить ту же информацию для URL2;
  • [....]

  • Рабочий выбирает что-нибудь от 1 до 50 заданий (URL) из очереди (например, если есть только 5 - он поднимает 5, если есть 60 - поднимает 50, оставляя других для другого работника), и выдает запрос на Facebook API (который допускает несколько URL-адресов на запрос). Если это удается, все задания удаляются из очереди, если это не удается - все они остаются.

Я работаю с PHP и изучил Gearman , Beanstalkd , но не нашел подобной функциональности. Существует ли какая-либо (бесплатная) система массового обслуживания, которая бы поддерживала такое «пакетное отключение»?

Или, может быть, кто-нибудь мог бы предложить альтернативный способ решения такой проблемы? Я подумал о том, чтобы сохранить список «для проверки» URL-адресов вне системы очередей, а затем добавить их в связки с максимальным N элементов с заданием cron, которое выполняется каждый период X. Но это своего рода построение собственной очереди, которая наносит ущерб всей цели, не так ли?

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Я использовал Beanstalkd для получения 100 имен твиттера за раз, а затем вызывал API со всеми ними.Когда я закончил, я удалил их - но я мог бы не удалять некоторые (или все), если бы захотел.

Это был простой цикл для резервирования начальных 100 (по одному за раз), иЯ положил результаты (идентификатор задания и возвращенные данные) в массив.Когда я закончил работу с полезной нагрузкой (в данном случае это экранное имя в твиттере), я удалил их, но мог бы легко выпустить их обратно в очередь.

0 голосов
/ 04 марта 2012

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

Таблицы БД, используемые для этого, определены здесь .

...