(Dies ist ein Memo über Python von GAE 1gen, das ich vor langer Zeit geschrieben habe, aber ich werde es fallen lassen, weil es im Entwurf enthalten ist. Ich denke, dass es unnötig ist, weil GAE 2gen jetzt der Mainstream ist.)
Wenn ich von GAE / py auf GCS verweise, gibt es einen Fall von Dateinamen, für den eine URL-Codierung erforderlich ist. Ich war also ein wenig süchtig danach. Notieren Sie sich dies. Darüber hinaus ist dieses Problem kein Problem, wenn Sie die REST-API usw. selbst berühren. Es ist nur eine Geschichte, dass die Angebotsverarbeitung der Cloud-Speicherbibliothek für GAE nicht konsistent war.
Die AppEngine-Dokumentation bezieht sich auf eine Bibliothek namens Google Cloud Storage Client Library ().
Der Name ist inkonsistent,
pip install GoogleAppEngineCloudStorageClient
Es ist eine Bibliothek, die gemacht werden kann.
Der Repository-Name auf github lautet appengine-gcs-client, daher ist dieser Name möglicherweise korrekt. Es scheint, dass es eine für Java und eine für Python gibt, aber dieses Mal sprechen wir über eine Bibliothek für Python.
Als Funktion denke ich, dass die Schnittstelle für den Zugriff auf die REST-API von Cloud Storage mithilfe der Anmeldeinformationen von AppEngine dateiähnlich umschlossen ist.
Das einzige, was diesmal stecken blieb, war, dass die Anfrage nicht gemäß den REST-API-Spezifikationen gestellt wurde. Dies lag daran, dass in einem Teil der Implementierung der Clientbibliothek der URL-Angebotsprozess weggelassen wurde.
Ich war süchtig nach der Methode copy2 (src, dst)
, und die src dieser Methode war URL-codiert. Das Phänomen war, dass die Zeichenfolgen, die an andere Methoden übergeben wurden und dst URL-codiert waren, obwohl dies nicht der Fall war.
Der Grund ist einfach: Die anderen Argumente werden meistens als Pfadparameter übergeben, daher wird der Prozess urllib.quote ()
geschrieben, während
Der Quellcode der copy2-Methode ist der REST-API-Header-Parameter x-goog-copy-source
. Dies lag daran, dass der Prozess "urllib.quote ()" nicht geschrieben wurde, weil er als übergeben wurde.