Облачная функция Google выдает ошибку 404 - PullRequest
1 голос
/ 14 января 2020

Я создал облачную функцию, которая запускается событием Finalize / Create в корзине Google Cloud Storage.

Я поместил 10 000 изображений в корзину, и большинство изображений успешно запустили функцию Cloud, в то время как некоторые выдали следующее исключение, и я просто запутался в причинах этой ошибки.

Ошибка возвращает 404, но когда я проверяю ведро, изображение там. У кого-нибудь есть опыт исправления следующего исключения?

По какой-то причине облачная функция проверяет несуществующий каталог.

Следует проверить следующий каталог:

https://storage.googleapis.com/download/storage/v1/b/hidden-name/images%2F3683740a95fa3600d4d9a220c9e0b472.jpg

Однако вместо этого он проверяет следующий каталог, который не существует (/o папка не существует):

https://storage.googleapis.com/download/storage/v1/b/hidden-name/o/images%2F3683740a95fa3600d4d9a220c9e0b472.jpg

Это исключение, которое я получаю:

Traceback (последний вызов был последним): файл "/env/local/lib/python3.7/site-packages/google/cloud/storage/blob.py", строка 721, в транспортном файле download_to_file, file_obj , download_url, заголовки, начало, конец, файл raw_download "/env/local/lib/python3.7/site-packages/google/cloud/storage/blob.py", строка 645, в _do_download download.consume (transport ) Файл "/env/local/lib/python3.7/site-packages/google/resumable_media/requests/download.py", строка 153, в файле самопотребления self._process_response (result) "/ env / local / lib /python3.7/site-packages/google/resumable_media/_download.py ", строка 171, в _process_resp однократный ответ, _ACCEPTABLE_STATUS_CODES, файл self._get_status_code "/env/local/lib/python3.7/site-packages/google/resumable_media/_helpers.py", строка 96, в require_status_code * status_codes google.resumable_media.commonmon : («Запрос не выполнен с кодом состояния», 404, «Ожидается одно из»,,) Во время обработки вышеупомянутого исключения произошло другое исключение: обратная связь (последний вызов был последним): Файл "/ env / local / lib / python3 .7 / site-packages / google / cloud / functions / worker.py ", строка 383, в файле run_background_function _function_handler.invoke_user_function (event_object), файл" /env/local/lib/python3.7/site-packages/google /cloud/functions/worker.py ", строка 217, в invoke_user_function возвращает call_user_function (request_or_event) файл" /env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py ", строка 214, в call_user_function event_context.Context (** request_or_event.context)) Файл "/user_code/main.py", строка 44, в for_each_new_image create_thumb_move_to_thumbs_bucket (bucket_name, blo b_name) Файл "/user_code/main.py", строка 56, в файле create_thumb_move_to_thumbs_bucket blob_in_bucket.download_to_filename (download_tmp_filepath) "/env/local/lib/python3.7/site-packages/google/cloudbstob. py ", строка 761, в download_to_filename raw_download = raw_download, файл" /env/local/lib/python3.7/site-packages/google/cloud/storage/blob.py ", строка 724, в download_to_file _raise_from_invalid_response (ex c) Файл "/env/local/lib/python3.7/site-packages/google/cloud/storage/blob.py", строка 2161, в _raise_from_invalid_response поднять exceptions.from_http_status (response.status_code, сообщение, response = response) google.api_core.exceptions.NotFound: 404 GET https://storage.googleapis.com/download/storage/v1/b/hidden-name/o/images%2F3683740a95fa3600d4d9a220c9e0b472.jpg?alt=media: («Запрос не выполнен с кодом состояния», 404, «Ожидается один из»,,)

Метод ввода функции облака:

def for_each_new_image(event, context):   
    blob_name = event['name'].lower()
    bucket_name = event['bucket']   
    create_thumb_move_to_thumbs_bucket(bucket_name,blob_name)

Метод, который выдает ошибку:

def create_thumb_move_to_thumbs_bucket(bucket_name,blob_name):     
    bucket = _storage_client.get_bucket(bucket_name)
    blob_in_bucket = bucket.blob(blob_name)

    blob_name = blob_name.replace("ugc_images/","")    
    thumbnail_filename = blob_name.replace(".","-sm.")

    thumbnail_tmp_filepath = '/tmp/{}'.format(thumbnail_filename)       
    download_tmp_filepath = '/tmp/{}'.format(blob_name)    

    blob_in_bucket.download_to_filename(download_tmp_filepath)

Строка, которая выдает ошибку:

blob_in_bucket.download_to_filename(download_tmp_filepath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...