ファイルの更新が何度も成功した後、返されたファイル ID が有効なファイル ID ではなく drive:v1 である更新が 1 回ありました。また、App Engine ログによると、問題のリクエストは 10 秒 (通常は 1 秒未満) かかりましたが、これは非常に奇妙な App Engine インスタンスの起動時間によるものではありません。
私が使用したコードは、Google Drive SDK Python サンプル アプリ DrEdit に基づいており、わずかに変更されているだけです (テキストではなく小さな画像を転送するため、Base64 エンコーディングを追加しました)。
より具体的には、ServiceHandler クラスの put メソッドのサンプル コードでは、このコードは、ファイルを更新した後にファイル ID を返すことになっています。
# Respond with the new file id as JSON.
self.RespondJSON(resource['id'])
これは何度も機能しましたが、1 回は drive:v1 が返されました。ファイルIDの問題を除いて、更新はファイルを正しく変更しましたが、リクエストは正常に機能しました。
これによって影響を受けるサンプル コードの部分に加えた変更を次に示します。
resource = service.files().update(
id=data['resource_id'],
newRevision=True,
body=None,
media_body=MediaInMemoryUpload(base64.b64decode(data.get('content', '')),
data['mimeType']),
).execute()
ちなみに、put メソッドの「新しいファイル ID を JSON で応答する」というコメントは、ファイルを更新するとファイル ID が変わるように見えますが、そうではないようです。これは非常に紛らわしいので、更新後にファイル ID が実際に変更されることがない限り、これを変更することをお勧めします。