Недокументировать ошибку 409 с помощью Square-Connect API

Я перезапустил некоторый тестовый код, который вставляет несколько сотен элементов в мой регистр. Код работал несколько месяцев назад. Теперь я получаю 409 — «Конфликт/Возможно, выполняется другое обновление, попробуйте еще раз».

Ошибка может произойти при выдаче пакетного запроса DELETE элемента или пакетного запроса элемента POST. Это НЕ происходит, когда каждое удаление или сообщение выдается как отдельный запрос.

Мой процесс выполняется синхронно в одном потоке, поэтому у меня никогда не бывает более одного запроса к Square в любой момент времени.

Я предполагаю, что это ошибка, которая была введена как часть некоторого изменения кода для проверки одновременных обновлений, но этот код не был должным образом протестирован (опять же, просто предположение).


person barry    schedule 09.09.2014    source источник


Ответы (1)


Спасибо за указание на этот недокументированный тип ошибки. Можно получить ошибку 409 от конечных точек, связанных с элементами, когда вы отправляете большое количество одновременных запросов (как в случае с конечной точкой отправки пакета). Чтобы уменьшить вероятность этой ошибки, вы можете уменьшить количество запросов, включаемых в каждый отдельный пакет (скажем, с 30 до 15), или отправлять каждый запрос по отдельности.

Даже после уменьшения размера пакета все еще может возникнуть ошибка 409. Ваше приложение должно быть готово столкнуться с этой ошибкой и повторить любые затронутые запросы.

Если проблема не устранена, добавьте комментарий к этому вопросу, и мы продолжим расследование.

person Stephen Barlow    schedule 10.09.2014
comment
Я не уверен, как кодировать решение на основе ваших отзывов. Всегда ли есть шанс, что 409 может быть выброшено для элемента в сценарии пакетного добавления, даже если в пакете всего 15 элементов (т. Е. Вероятность снижается, но все еще существует?). Если всегда есть шанс, то не всегда ли нужно иметь дело с возможностью, будь то размер партии 15 или 30? Следует ли повторять попытку добавления элемента для всех элементов, отклоненных с ошибкой 409, до тех пор, пока они не будут успешными? - person barry; 11.09.2014
comment
Спасибо за продолжение. Я обновил ответ, чтобы уточнить, что да, эта ошибка может возникать даже при небольших партиях. Ваше приложение должно быть готово к повторным запросам, которые обнаруживают ошибку 409. - person Stephen Barlow; 11.09.2014
comment
Беспокоит ли вас мысль о том, что всем разработчикам, использующим ваш API для пакетного добавления элементов, придется кодировать эту ошибку 409? Возможно, объяснение цели 409 поможет нам понять необходимость защитного кода, который нам всем придется написать. Спасибо. - person barry; 11.09.2014