Smartsheet API коды ответов с помощью Python SDK? - PullRequest
0 голосов
/ 27 февраля 2019

Я использую Smartsheet python SDK для выполнения массовых операций (удаления, обновления и т. Д.) На Smartsheet.Поскольку мой процесс становится более сложным, я понял, что мне нужно включить некоторые внутренние проверки, чтобы убедиться, что я не сталкиваюсь с ошибками при отправке нескольких вызовов в минуту, как Smartsheet предлагает в своих рекомендациях API.

У меня такой вопрос: как мне получить доступ и проанализировать ответы API при использовании таких функций SDK, как Sheets.delete_rows()?Например, некоторые из моих запросов, использующих эту функцию, могут вызвать status: 500 Internal Server Error, что означает, что запрос был правильно отформатирован, но операция завершилась неудачно в конце таблицы Smartsheet.

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

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

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

deleteRows = smartsheet_client.Sheets.delete_rows({{sheetId}}, [ {{rowId1}}, {{rowId2}}, {{rowId3}}])

print(deleteRows)

Если запрос выполнен успешно, ответ будет выглядеть следующим образом:

{"data": [7411278123689860], "message": "SUCCESS", "result": [7411278123689860], "resultCode": 0}

Если бы возникла проблема, например, строки не были найдены, ответ выглядел бы так:

{"result": {"code": 1006, "errorCode": 1006, "message": "Not Found", "name": "ApiError", "recommendation": "Do not retry without fixing the problem. ", "refId": "jv6o8uyrya2s", "shouldRetry": false, "statusCode": 404}}
0 голосов
/ 28 февраля 2019

Все SDK Smartsheet будут откатываться и повторяться по умолчанию.Другие ошибки будут выброшены как исключения.Существует способ увеличить время ожидания по умолчанию (чтобы разрешить больше попыток) при создании клиента.Тем не менее, специфичный для Python способ сделать это еще не документирован.Я добавлю это в очередь.Между тем, я думаю, что приведенный ниже пример Ruby будет наиболее близким к тому, как Python, вероятно, это делает, но вы можете прочитать различные способы сделать это.

C #: https://github.com/smartsheet-platform/smartsheet-csharp-sdk/blob/master/ADVANCED.md#sample-retryhttpclient

Java: https://github.com/smartsheet-platform/smartsheet-java-sdk/blob/master/ADVANCED.md#sample-retryhttpclient

Node.js: https://github.com/smartsheet-platform/smartsheet-javascript-sdk#retry-configuration

Рубин: https://github.com/smartsheet-platform/smartsheet-ruby-sdk#retry-configuration

...