Корзина Google Cloud Storage перестала перезаписывать файлы по умолчанию при загрузке с помощью библиотеки Python - PullRequest
0 голосов
/ 20 июня 2019

У меня есть задание cron App Engine, которое выполняется каждую неделю и загружает файл с именем logs.json в корзину Google Cloud Storage.

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

В последние несколько недель вместо перезаписи файла существующая копия была сохранена, а новая загружена под другим именем, например logs_XHjYmP3.json.

Thisэто упрощенный фрагмент из класса хранения Django, в который выполняется загрузка.Я подтвердил, что имя файла является правильным в момент загрузки:

# Prints 'logs.json'
print(file.name)
blob.upload_from_file(file, content_type=content_type)
blob.make_public()

При чтении документации , оно говорит:

Эффект загрузки вСуществующий BLOB-объект зависит от политик «контроля версий» и «жизненного цикла», определенных в корзине BLOB-объекта.В отсутствие этих политик загрузка перезапишет любое существующее содержимое.

Управление версиями для корзины установлено как приостановленное, и я не знаю о каких-либо других настройках или каких-либо изменениях, которые я сделал, чтоможет повлиять на это.

Как я могу сделать перезапись файла перезаписать любой существующий файл с таким же именем?

1 Ответ

1 голос
/ 21 июня 2019

После дальнейшего тестирования, хотя print(file.name) выглядело корректно, неверное имя файла на самом деле было получено из метода класса хранения get_available_name() Джанго.Этот метод пытался создать уникальное имя файла, если файл уже существует.Я добавил метод в свой пользовательский класс хранения, и, если файл соответствует критериям, я просто возвращаю существующее имя, чтобы позволить ему перезаписать.Однако я до сих пор не уверен, почему он начал это делать.

...