Как вы справляетесь с API заказов на продажу, не имеющим возможности ограничения?


Работа над интеграцией API заказа для модуля сообщества. Хотел избежать переписывания модели Mage_Sales_Model_Order_Api, поэтому вместо этого я реализовал наблюдателя события sales_order_collection_load_before, которое ограничивает набор результатов жестким пределом. Пошел с 250, это предел, который использует Shopify, кажется разумным числом, если вы собираетесь что-то жестко кодировать.

Если есть интеграции API, которые зависят от API заказа, не имеющего никаких ограничений, то они могут столкнуться с проблемами. Например, если кто-то имеет интеграцию API заказов, которая собирает полное количество заказов ежемесячно (или даже ежедневно, временной диапазон несколько произволен), тогда теперь он будет принимать только 250 заказов.

Хотя можно отфильтровать результирующий набор по диапазону дат, любой выбранный вами диапазон дат будет по существу произвольным. Дневной объем заказов может быть слишком мал и привести к неоправданно большому количеству обращений к API для небольших магазинов, а для более крупных магазинов это может быть слишком большой ассортимент. Действительно необходимо иметь возможность ограничить ответ API абсолютным количеством результатов, и это то, что делают большинство современных API.

Кто-нибудь нашел какое-нибудь хорошее решение для этого?

 4
Author: kalenjordan, 2013-02-12

1 answers

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

Решение предоставлено Эшли Шредер в твиттере

Обобщенный ответ:

Мы постепенно отступаем, если обнаруживаем большие отклики. т.е. пытаемся в течение 24 часов, затем отступаем до 6*4 часов. ...
Если соединение падает или становится слишком большим, мы спасаемся и отступаем, это рекурсивно, поэтому, если 4 часа слишком большие, мы снова разделились.

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

 1
Author: jharrison.au, 2013-03-09 01:27:31