Как получить доступ к последнему загруженному объекту в облачном хранилище Google, используя python в модели tenorflow - PullRequest
0 голосов
/ 04 апреля 2019

Я проснулся на модели tenorflow, где я хочу использовать последний объект ulpoad, чтобы получить результат от этого загруженного объекта.Есть ли способ получить доступ к последнему объекту, загруженному в корзину облачного хранилища Google, используя python.

1 Ответ

0 голосов
/ 04 апреля 2019

Нет прямого способа получить последний загруженный объект из Google Cloud Storage. Однако существует обходной путь, использующий метаданные объекта.

Каждый объект, который он загружает в облачное хранилище Google, имеет разные метаданные. Для получения дополнительной информации вы можете посетить документацию Облачное хранилище> Метаданные объекта . Одна из метаданных - « Последнее обновление ». Это значение является отметкой времени последнего обновления объекта. Что может случиться только в 3 случаях:

A) Объект был загружен впервые.

B) Объект был загружен и заменен, поскольку он уже существует.

C) Метаданные объекта изменены.

Если вы не обновляете метаданные объекта, вы можете использовать эту работу вокруг:

  1. Установить переменную с очень старым объектом date_time (1900-01-01 00: 00: 00.000000). У объекта нет шансов получить эти метаданные обновления.
  2. Установить переменную для хранения имени последнего блоба и установить для него значение "NONE"
  3. Список всех BLOB-объектов в корзине Документация Google Cloud Storage
  4. Для каждого имени BLOB-объекта загрузить обновленные метаданные и преобразовать их в объект date_time
  5. Если метаданные обновления блоба больше уже имеющихся у вас, обновите их и сохраните текущее имя.
  6. Этот процесс будет продолжаться до тех пор, пока вы не выполните поиск по всем BLOB-объектам, и только переменная будет сохранена в переменных.

Я немного кодировал себя, и это мой пример кода GitHub , который работал для меня. Возьмите логику и измените ее в зависимости от ваших потребностей. Я бы также предложил протестировать его локально, а затем использовать в своем коде.

НО, если вы обновите метаданные BLOB-объекта вручную, это еще один обходной путь:

Если вы обновите какие-либо метаданные большого двоичного объекта, см. Эту документацию Просмотр и редактирование метаданных объекта , тогда отметка времени «Последнее обновление» этого большого двоичного объекта также будет обновлена, поэтому выполнение вышеуказанного метода НЕ БУДЕТ дать вам последний загруженный объект, но последний измененный, которые отличаются . Поэтому вы можете добавлять собственные метаданные к своему объекту каждый раз, когда вы загружаете, и эти пользовательские метаданные будут меткой времени во время загрузки объекта. Поэтому независимо от того, что произойдет с метаданными позже, пользовательские метаданные всегда будут сохранять время загрузки объекта. Затем используйте тот же метод, что и выше, но вместо получения blob.update получите blob.metadata, а затем используйте эту дату с той же логикой, что и выше.

Дополнительные примечания:

Чтобы использовать пользовательские метаданные, необходимо использовать префикс x-goog-meta-, как указано в разделе Редактирование метаданных объекта в документации по просмотру и редактированию метаданных объекта.

Таким образом, [CUSTOM_METADATA_KEY] должно быть что-то вроде x-goog-meta-uploaded и [CUSTOM_METADATA_VALUE] должно быть [CURRENT_TIMESTAMP_DURING_UPLOAD]

...