Я пытаюсь использовать Shopify GraphQL API для Admin в PHP (Laravel).
Ограничение и регулирование скорости работает в GraphQL api по сравнению с REST api, рассчитывается на основе стоимости запрос.
![Cost of Shopify GraphQL query](https://i.stack.imgur.com/7ERr1.png)
Несколько моментов, которые следует учитывать:
- Максимальная доступная стоимость1000 за один вызов API (запрос).
- Если вы потратили несколько очков из 1000, каждую секунду будут восстанавливаться 50 очков.
- Если у вас в корзине меньше очков стоимости,и вы сделаете запрос, стоимость которого выше этого, он будет ограничен.
Предполагаемый объем запроса, который я передаю в API, составляет 502 , представленный requestedQueryCost .Принимая во внимание, что actualQueryCost представляет собой фактический ответ , возвращаемый API для определенного магазина.
В приведенном выше снимке, наихудший сценарий, requiredQueryCost равен acutalQueryCost для магазина с большим количеством заказов.
Теперь,когда этот запрос выполнен, я потратил 502 балла, 498 осталось, 1 секунда истекла, добавлено 50 баллов = 548 , и я могу сделать второй вызов API для извлечения второй страницы данных.После второго вызова API у меня останется меньше очков, поэтому мне придется положить sleep на 1 или 2 секунды, чтобы набрать очки для выполнения вызова API.
В случае, показанном на снимке, мне пришлось поставить 10 секунд ожидания ожидания, чтобы восстановить 500 точек , чтобы сделать следующий вызов API.
Проблема: Как лучше всего определить время сна (ожидания) для разных магазинов?Мы не хотим, чтобы все магазины ожидали в течение 10 секунд, даже если у них меньшая стоимость запроса.
Примечание: Информацию о коде см. В моем ответе ниже.