Skip to content

Instantly share code, notes, and snippets.

@neumond
Last active June 16, 2017 12:08
Show Gist options
  • Save neumond/9b543b750f88ea49ef8aebb0cd59fd06 to your computer and use it in GitHub Desktop.
Save neumond/9b543b750f88ea49ef8aebb0cd59fd06 to your computer and use it in GitHub Desktop.
Resumable MediaFileUpload
# You need to define three functions to handle persistence of couple of values:
# load_resume_point() -> Optional[Tuple[str, int]]
# save_resume_point(str, int) -> None
# clean_resume_point() -> None
media = MediaFileUpload('pig.png', mimetype='image/png', resumable=True)
request = farm.animals().insert(media_body=media, body={'name': 'Pig'})
# if you have previously acquired resume point
rp = load_resume_point()
if rp is not None:
request.resumable_uri, request.resumable_progress = rp
response = None
while response is None:
status, response = request.next_chunk()
# store your progress after every chunk
save_resume_point(request.resumable_uri, request.resumable_progress)
# now you can even kill the uploading process without loss of progress
if status:
print "Uploaded %d%%." % int(status.progress() * 100)
print "Upload Complete!"
# after completion cleanup persistent data
clean_resume_point()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment