Проверьте, существует ли блоб - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь создать группу обеспечения доступности баз данных, которая сначала проверяет, существует ли указанный путь или большой двоичный объект в облачном хранилище Google.Это блоб, содержащий некоторые данные RAW, а не тот, который установлен на рабочих Composer.

В качестве альтернативы было бы удобно посмотреть, существует ли он и содержит ли файлы (список> 1) за один раз, но существование уже хорошо, чтобы вернуться.

Пока я пыталсяиспользование статистики gsutil через команду bash, библиотеку google.cloud.storage и gcs_hook безрезультатно.Все они возвращают False для папки, которая, я уверен, существует

def check_folder(templates_dict,**kwargs):
    bucket = 'bucketname'
    blob_name = templates_dict['blob_name']
    # Blob name is something along the lines of '2019-04-10/11/' 
    gcs = GoogleCloudStorageHook()
    flag = gcs.exists(bucket,blob_name)
    if flag:
        print(flag)
        return('this_is_true')
    else:
        print(flag)
        return('this_is_not_true')

Для данного blob_name, которое, я уверен, существует, я ожидаю истину, но она всегда возвращает False.Есть идеи, что происходит?Спасибо!

1 Ответ

4 голосов
/ 11 апреля 2019

Функция exists в GoogleCloudStorageHook проверяет объект и не поддерживает использование префиксов.Если вы хотите проверить, есть ли какие-либо данные в данном префиксе, вы можете использовать функцию list.

Пример:

if bool(hook.list(bucket, prefix=prefix)):
    print('some data is in my folder!')

Вы также можете проверитьреализация датчика GoogleCloudStoragePrefixSensor , поскольку он очень похож на то, что вы делаете.

...