Я пишу свою собственную оболочку для Google Drive API v3 на Python.У меня небольшая проблема с загрузкой файлов и просмотром того, что происходит.Вот небольшой пример кода
# create service using oauth2flow -> drive_service
# upload pdf from disk
media = MediaFileUpload('/files/test.pdf', resumable=True)
file_metadata = {'name': 'test.pdf'}
res = drive_service.files().create(
body=file_metadata,
media_body=media,
fields="id"
)
Все работает нормально, но я не могу увидеть, сколько байтов было передано до сих пор (как в случае загрузки, у меня есть метод next_chunk
).Кроме того, я действительно не знаю, как использовать функциональность resumable=True
в случае ошибки.Еще одна вещь, если я добавлю chunksize
переменную в MediaFileUpload
, я получу 400 ошибок Bad Request.Возможно ли иметь такую же функциональность, как в методе загрузки, где я могу загружать файлы по частям и отслеживать, что происходит?
РЕДАКТИРОВАТЬ:
@ Tanaike решил проблему.Вы можете отслеживать загрузку, используя метод next_chunk
, но chunkize
должен быть кратным 256 КБ.Вот пример кода:
CHUNK_SIZE = 256 * 1024
DEFAULT_CHUNK_SIZE = 100 * 1024 * 1024
media = MediaFileUpload('/files/test.pdf', resumable=True, chunksize=CHUNK_SIZE)
file_metadata = {'name': 'test.pdf'}
res = drive_service.files().create(
body=file_metadata,
media_body=media,
fields="id"
)
response = None
while response is None:
status, response = res.next_chunk()
try:
sys.stdout.write('%d/%d Bytes transfered' % (status.resumable_progress, status.total_size))
except:
pass