0

Google Cloudが提供するgoogle-api-python-clientライブラリを使用しています。 私は多くの方法を使用して計算エンジンリソース(ディスク、インスタンス、スナップショットなど)を操作しています しかし、多くの操作を実行している間は、ブロックを追加しながらtry..catchブロック&を追加する必要があります私は、Google Cloudが基本的なExceptionクラスを提供していないことに気付きました。私が考えていGCP Pythonライブラリの基本例外クラス: "google-api-python-client"

最悪の場合には、次のとおりです。

try: 
<code> 
except: 
<prompt error> 

しかし、私はこれを行うための正しい方法ではないと信じています。

私に何か不足していますか? GCP-Libraryでは例外ハンドラが提供されていませんか?

答えて

1

私はドキュメントとAPIが返すエラースタックを調べました&私はコード内の例外を処理するためのエラーを処理する方法を見つけ出すことができました。

あなたとは違って、可能です..!

以下の方法で、エラー/例外を処理できます。

import oauth2client.client 
from googleapiclient import discovery 
import googleapiclient.errors 

# 
# prepare credentials dictionary 
# 

try: 
    compute = discovery.build(
      "compute", "v1", credentials=credentials) 
except oauth2client.client.HttpAccessTokenRefreshError as e: 
    print 'Error > ', e.message 
except googleapiclient.errors.HttpError as e: 
    reason = str(e._get_reason).split("\"")[-2] 
    print 'Error > ', reason 

私はこれが役に立ちます。

この2つは、最も一般的なエラーです。他のエラーがあるかもしれませんが、これは完全にケースに依存しています。

しかし、すべてのエラーがgoogleapiclient.errors class

@Billプリンで存在すべきである、私に知らせてください。

+0

はい、よく見えますが、私はあなたの質問に誤解しました。 –

0

短い答えは、google-api-python-clientにはあなたが探している例外クラスがないということです。

google-api-python-clientライブラリはサポートされていますが、積極的に開発されていない古いライブラリです。クライアントの呼び出しコードはすべて自動生成されており、多くのAPIのための非常に汎用的なクライアントなので、ネットワーク/トランスポート/ HTTPレイヤー以外には多くの意味のある例外がコード化されていません。

開発は手書きライブラリと自動生成されたライブラリが混在したgoogle-cloud-pythonライブラリになります。あなたは、コンピューティングを含むすべてのAPIがまだ存在しているわけではありませんが、それらはまだ存在しないことに注意してください。新しい自動生成コードは、慣用的な言語パターンにもっと焦点を当てます。

新しいライブラリにはさらに例外がいくつかありますが、それをさらに改善する方法があれば、google-cloud-pythonクライアントライブラリのGithubの問題として考えてください。

+0

ありがとう@Bill、google-api-python-clientの例外処理はありませんか? google-cloud-pythonライブラリに自分のコードを移植する必要がありますか? – amitam

+0

私はAPIと詳細が非常にうまく言及されているこのリンクを見つけることができました。 [link](https://developers.google.com/resources/api-libraries/documentation/storage/v1/python/latest/index.html)、 'google-cloud-python'ライブラリの場合と似ていますか? ? – amitam

+0

[google-cloud-python(https://google-cloud-python.readthedocs.io/en/latest/)のドキュメントはこちらです。APIがサポートされている場合は、google-cloud-pythonを使用する必要があります。もしそれがなければ 'google-api-python-client'に固執することができますが、私はなぜ新しい拡張機能がないのか説明しています。つまり、例外の改善は' google-cloud-python' -api-python-client'を実行します。 –

関連する問題