За последние 24 часа нас посетили 21334 программиста и 1022 робота. Сейчас ищут 876 программистов ...

Gearman и управление очередью

Тема в разделе "PHP для профи", создана пользователем voron121, 6 авг 2020.

  1. voron121

    voron121 Активный пользователь

    С нами с:
    18 ноя 2016
    Сообщения:
    29
    Симпатии:
    1
    Доброго времени суток.
    Опишу задачу: есть некое приложение, которое шлет запросы к API vk . При определенной частоте запросов API отвечает ошибкой с текстоом что лимит запросов в секунду превышен. Решил что для решения ограничения количества запросов в секунду к API внешних сервисов можно использовать сервере очередей Gearman.
    Установил, настроил, потестил на тестовых примерах - вроде бы работает. При этом как управлять очередью я так и не понял :(.
    Есть клиент, который создает таск и есть воркер который таск обрабатывает. В теории мне в промежутке между воркером и клиентом нужен отдельный слорй, который бы проверял количество задачь в работе. Но как это реализовать я что-то вот совсем не могу понять. Кто работал с очередями gearman - прошу помощи
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Казалось бы, причём здесь Gearman. Он сам не даёт тебе средство для управления частотой запросов. То есть он не решает задачу. Зачем тогда это звено вообще?
    --- Добавлено ---
    Давай нарисуем каркас что должно вообще происходить. Есть некий цикл, не будем вдаваться в детали как он огранизован, это может быть очередь гирман или буквально цикл в процессе-демоне. на каждой итерации цикла делается новый запрос. Ну добавь туда контроль "сколько запросов было сделано за последние N сек/часов/и т.п." и а случае если это число + 1 превышает заданный лимит, то пропускаем задачу (continue, fail()... зависит от реализации).
     
    voron121 нравится это.
  3. voron121

    voron121 Активный пользователь

    С нами с:
    18 ноя 2016
    Сообщения:
    29
    Симпатии:
    1
    на сколько я понимаю, возможно ошибаюсь, сервер очередей как раз дает возможность решения проблемы с распределением очередей запросов к API . В случае с Gearman не уверен, по этому и создал топик.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.237
    Адрес:
    там-сям
    Очереди позволяют распределять нагрузку, не ждать ответа в одном процессе, а делегировать работу куда-то ещё. Принцип "выстрелил и забыл". То что ты описал - ограничение пропускной способности - возможно кто-то и решал для воркера. Это точно не прямая задача Gearman. Можешь в воркере проверять счетчик и отказываться от работы.
     
    voron121 нравится это.
  5. voron121

    voron121 Активный пользователь

    С нами с:
    18 ноя 2016
    Сообщения:
    29
    Симпатии:
    1
    ага ..... понял, тогда да, вопрос не актуален в рамках gearman . Спасибо что помогли разобраться