0

Ich verwende die Google-API-Python-Client-Bibliothek, die von Google Cloud bereitgestellt wird. Ich benutze viele Methoden von ihm, um mit Rechenmaschinenressourcen (Festplatten, Instanzen, Snapshots etc.) zu arbeiten. Aber während viele Operationen, für bessere Handhabung und widerstandsfähigen Code, sollte ich try..catch Blöcke & hinzufügen, während die Blöcke hinzufügen Ich habe festgestellt, dass Google-Cloud keine grundlegende Exception-Klasse bietet.Basisausnahmeklasse für GCP Python-Bibliothek: "google-api-python-client"

Im schlimmsten Fall, dass ich gedacht habe ist von:

try: 
<code> 
except: 
<prompt error> 

Aber ich glaube, dies zu tun nicht der richtige Weg ist.

Fehle ich etwas? oder der Ausnahmebehandler wird nicht von GCP-Library zur Verfügung gestellt?

Antwort

1

Ich bin durch die Dokumentation gegangen und die Fehler-Stack, die API gibt & Ich war in der Lage, herauszufinden, die Art und Weise, Fehler zu behandeln, um Ausnahmen in unserem Code zu behandeln.

Also, anders als Sie erwähnt, ist es möglich ..!

Mit dem folgenden Weg könnten wir die Fehler/Ausnahmen behandeln.

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 

Ich hoffe, das ist hilfreich!

Diese beiden sind die häufigsten Fehler, die auftreten. Es kann andere Fehler geben, die vollständig vom Fall abhängig sind.

Aber alle Fehler sollten in googleapiclient.errors class

@ Bill Prin vorhanden sein, lassen Sie es mich wissen.

+0

Ja, sieht gut aus, ich habe deine Frage missverstanden. –

0

Die kurze Antwort ist, dass google-api-python-client nicht die Ausnahmeklassen hat, die Sie suchen. Die Bibliothek google-api-python-client ist eine ältere Bibliothek, die zwar unterstützt wird, aber nicht aktiv entwickelt wurde. Der Client-Aufruf-Code ist alles autogenisiert und es ist ein sehr generischer Client für viele APIs, so dass dort nicht viele sinnvolle Ausnahmen anders als in der Netzwerk-/Transport-/HTTP-Schicht codiert sind.

Entwicklung geht weiter auf google-cloud-python Bibliothek, die eine Mischung aus handgeschriebenen Bibliotheken und selbst erstellten Bibliotheken ist. Sie werden feststellen, dass noch nicht alle APIs, einschließlich der Compute, vorhanden sind, obwohl sie rechtzeitig verfügbar sind. Der neue automatisch generierte Code wird sich mehr auf idiomatische Sprachmuster konzentrieren.

Die neue Bibliothek enthält einige spezifischere Ausnahmen. Wenn Sie jedoch Ideen zur weiteren Verbesserung haben, würde ich Ihre Ideen als Github-Problem in der google-cloud-python-Clientbibliothek beschreiben.

+0

Dank @Bill, Also keine Ausnahmebehandlung für Google-API-Python-Client? Sollte ich meinen Code in die google-cloud-python-Bibliothek portieren? – amitam

+0

Ich könnte diesen Link finden, wo die APIs und Details sehr schön erwähnt werden. [link] (https://developers.google.com/resources/api-libraries/documentation/storage/v1/python/latest/index.html), wissen Sie ähnlich wie für 'google-cloud-python' library ? – amitam

+0

Hier sind die Dokumente für [google-cloud-python (https://google-cloud-python.readthedocs.io/en/latest/). Sie sollten google-cloud-python verwenden, wenn es Ihre API unterstützt.Wenn nicht, kannst du bei "google-api-python-client" bleiben, ich erkläre nur, warum es keine neue aktive Feature-Entwicklung gibt, was bedeutet, dass Exception-Verbesserungen in "google-cloud-python", aber nicht "google" gehen könnten -api-python-Client'. –