ApplicationError2 и ApplicationError5 при взаимодействии с внешним API из AppEngine - PullRequest
1 голос
/ 06 февраля 2012

Я построил приложение на google app engine, в python27, для соединения с API других сервисов, и в целом все работает гладко. Время от времени я получаю одну из следующих двух ошибок

(<class 'google.appengine.api.remote_socket._remote_socket.error'>, error('An error occured while connecting to the server: ApplicationError: 2 ',), <traceback object at 0x11949c10>)

(<class 'httplib.HTTPException'>, HTTPException('ApplicationError: 5 ',), <traceback object at 0x113a5850>)

Первая из этих ошибок (ApplicationError: 2) Я интерпретирую как ошибку, происходящую со стороны серверов, с которыми я общаюсь, однако я не смог найти никаких подробностей об этом, и если есть какие-либо как я отвечаю / могу это исправить.

Вторая из этих ошибок (ApplicationError: 5) Я обнаружил некоторые подробности, и это говорит о том, что серверу потребовалось слишком много времени для связи с моим приложением - однако я установил тайм-аут на 20 с, и он выходит из строя значительно быстрее чем это.

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

1 Ответ

1 голос
/ 07 февраля 2012

Вы начинаете использовать слово «идемпотент» в обычных разговорах и ругательствах:)

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

Надеюсь, это имеет смысл. FWIW мы работаем с некоторыми недружественными API, и для нас около 80% нашего кода имеет дело именно с этим видом !@#$%.

...