Używam SDK SmartSheet Python SDK, aby wykonać operacje masowe (Usuwa, aktualizacje itp.) Na SmartSheet. Ponieważ mój proces staje się bardziej złożony, zdałem sobie sprawę, że muszę włączyć pewne wewnętrzne kontrole, aby upewnić się, że nie napotykam błędów podczas wysyłania wielu połączeń na minutę jako SmartSheet sugeruje w swoich najlepszych praktykach API.

Moje pytanie brzmi: Jak uzyskać dostęp i analizować odpowiedzi API podczas korzystania z funkcji SDK, takich jak Sheets.delete_rows()? Na przykład, niektóre moje prośby za pomocą tej funkcji mogą wyzwalać status: 500 Internal Server Error, co oznacza, że żądanie zostało prawidłowo sformatowane, ale operacja nie powiodła się na końcu SmartSheet.

Mogę przeglądać te odpowiedzi w moim pliku dziennika (lub w terminalu podczas pracy interaktywnie), ale jak mogę uzyskać dostęp do nich z mojego skryptu, więc mogę, na przykład, sleep() mój proces dla XX sekund, jeśli napotkał taką odpowiedź?

0
Altoids_99 27 luty 2019, 21:43

2 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz poznać wyniki prośby, możesz przechowywać odpowiedź w zmiennej i sprawdzić, że do określania kolejnych kroków Twój proces powinien przyjmować. W przypadku Usuń rzędy Poproś o obiekt wyników jest zwrócony.

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

print(deleteRows)

Jeśli żądanie powiodło się, odpowiedź wyglądałaby taka:

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

Jeśli wystąpił problem, rzędy nie zostały znalezione na przykład, odpowiedź wyglądałaby tak:

{"result": {"code": 1006, "errorCode": 1006, "message": "Not Found", "name": "ApiError", "recommendation": "Do not retry without fixing the problem. ", "refId": "jv6o8uyrya2s", "shouldRetry": false, "statusCode": 404}}
1
daveskull81 1 marzec 2019, 19:06

Wszystkie SDKS SmartSheet SDKS zobowiązają się domyślnie i ponów próbę. Inne błędy zostaną rzucone jako wyjątki. Istnieje sposób na zwiększenie limitu czasu domyślnego (aby umożliwić więcej prób) podczas tworzenia klienta. Jednak sposób specyficzny dla Pythona nie wydaje się jeszcze udokumentowany. Dodam go do kolejki. W międzyczasie myślę, że poniższy przykład Ruby będzie najbliższy, jak Python prawdopodobnie to robi, ale możesz przeczytać różne sposoby, aby to zrobić.

C #: HTTPS: // GitHub. COM / SmartSheet-Platform / SmartSheet-CSHARP-SDK / BLOB / Master / Advanced.md # Próbka-RetryHttpClient

Java: HTTPS: // GitHub. COM / SmartSheet-Platform / SmartSheet-Java-SDK / BLOB / Master / Advanced.md # Próbka-RetryHttpClient

Węzeł SmartSheet-JavaScript-SDK # Retry-Configuration

Ruby: https://github.com/smartSheet-platform/smartSheet- Ruby-SDK # Retry-Configuration

1
kevinfansler 28 luty 2019, 18:52