使用 python SDK 的 Smartsheet API 响应代码?

Smartsheet API response codes with python SDK?

我正在使用 Smartsheet python SDK 在 Smartsheet 上执行批量操作(删除、更新等)。随着我的流程变得越来越复杂,我意识到我需要包括一些内部检查以确保我在每分钟发送多个调用时不会遇到错误 Smartsheet suggests in their API Best Practices.

我的问题是:如何在使用 Sheets.delete_rows() 等 SDK 功能时访问和解析 API 响应?例如,我使用此功能的一些请求可以触发 status: 500 Internal Server Error,这意味着请求格式正确,但在 Smartsheet 端操作失败。

我可以在我的日志文件中查看这些响应(或者在终端中 运行 交互)但是我如何从我的脚本中访问它们以便我可以,例如,sleep() 我的进程如果遇到这样的响应,持续 xx 秒?

默认情况下,所有 Smartsheet SDK 都会退避并重试。其他错误将作为异常抛出。 创建客户端时,有一种方法可以增加默认超时(以允许更多重试)。然而,Python-specific 方法似乎还没有被记录下来。我会将其添加到队列中。与此同时,我认为下面的 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

Ruby: https://github.com/smartsheet-platform/smartsheet-ruby-sdk#retry-configuration

如果您想知道请求的结果,您可以将响应存储在一个变量中并检查它以确定您的流程应该采取的后续步骤。在 DELETE Rows 请求的情况下,返回一个结果对象。

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}}