загрузка файла фляги и выгрузка на гугл диск - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь настроить загрузку файлов с помощью фляги, а затем перенести файл на Google Drive.

Это работает большую часть времени, но иногда перенос на google диск зависает после загрузки файла с помощью фляги. Проблема возникает только с большими файлами, а не каждый раз.

        filename = secure_filename(file.filename)
        filename=str(time.time()).replace('.','_')+'_____' + filename
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))


        file_metadata = {'name': displayName,
                     'parents': [foldertID] }

        media = MediaFileUpload('/var/flocation/' + filename)


        Gfile = service.files().create(body=file_metadata,
                                        media_body=media,
                                        fields='id').execute()
        fileID=Gfile.get('id')

        os.remove(os.path.join(app.config['UPLOAD_FOLDER'], filename))

Есть ли проблема с тем, что файл не был полностью загружен перед началом передачи на накопитель Goggle? Там нет сообщения об ошибке, просто висит. Если я повторно отправляю запрос на загрузку, это обычно решает проблему.

Спасибо за помощь.

1 Ответ

0 голосов
/ 08 января 2019

Из раздела «Возобновляемые носители» (чанкованная загрузка) Клиентских библиотек API Google (Python) - Загрузка мультимедиа Документы

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

И он предлагает этот метод

media = MediaFileUpload('pig.png', mimetype='image/png', resumable=True)
request = farm.animals().insert(media_body=media, body={'name': 'Pig'})
response = None
while response is None:
  status, response = request.next_chunk()
  if status:
    print "Uploaded %d%%." % int(status.progress() * 100)
print "Upload Complete!"
...