带有python SDK的Smartsheet API响应代码?

时间:2019-02-27 18:43:47

标签: smartsheet-api

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

不会出错。

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

我可以在日志文件中(或在交互式运行时在终端中)查看这些响应,但是如何从脚本中访问它们,因此,例如,sleep()在遇到这种情况时可以{{1}}处理我的进程达xx秒回应?

2 个答案:

答案 0 :(得分:1)

所有Smartsheet SDK都会默认退出并重试。其他错误将作为异常抛出。 创建客户端时,有一种方法可以增加默认超时(以允许更多重试)。但是,似乎尚未记录特定于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

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

答案 1 :(得分:1)

如果您想知道请求的结果,可以将响应存储在变量中,并检查该变量以确定过程应采取的下一步。对于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}}