Загрузка BLOB-объекта с использованием условных заголовков HTTP - PullRequest
0 голосов
/ 08 мая 2018

Я использую Google Cloud Python API для загрузки больших двоичных объектов в сегменты, что прекрасно работает. Однако для моего конкретного случая использования я должен предотвратить перезапись файлов. Вместо того, чтобы делать это в два этапа (1-й запрос на проверку наличия файла, 2-й этап загрузки большого двоичного объекта), я бы предпочел сделать это за один раз.
По-видимому, это можно сделать с помощью некоторых условных заголовков HTTP, например, If-None-Match: '*'.

К сожалению, Google Cloud Python API , похоже, не допускает никаких пользовательских заголовков.

Есть идеи, как мне это сделать?

Спасибо

1 Ответ

0 голосов
/ 08 мая 2018

Обнаружен обходной путь в Журнал проблем GoogleCloudPlatform в GitHub - # 4490 :

В настоящее время я пытаюсь решить эту проблему, заменив google.cloud.storage.blob._MULTIPART_URL_TEMPLATE и google.cloud.storage.blob._RESUMABLE_URL_TEMPLATE версиями, которые имеют необходимое предварительное условие, например,

from google.cloud import storage as gcs

gcs.blob._MULTIPART_URL_TEMPLATE = (
    f'{gcs.blob._MULTIPART_URL_TEMPLATE}&ifGenerationMatch=0'
)
gcs.blob._RESUMABLE_URL_TEMPLATE = (
    f'{gcs.blob._RESUMABLE_URL_TEMPLATE}&ifGenerationMatch=0'
)

Это помечено как запрос функции. Надеюсь, он будет добавлен в ближайшее время.

...