in utilities/networking.py [0:0]
def upload_dropbox(lfilename, dfilename, max_tries=7):
"""
Upload local file lfilename to dropbox location dfilename
Implements exponential backoff
"""
if not DROPBOX_FOUND:
print('Dropbox API not found')
return False
dbx = dropbox.Dropbox(dropbox_app_key)
ddir, _ = osp.split(dfilename)
ddir_exists = True
try:
dbx.files_get_metadata(ddir)
except dropbox.exceptions.ApiError as err:
ddir_exists = False
if not ddir_exists:
try:
dbx.files_create_folder(ddir)
except dropbox.exceptions.ApiError as err:
print('*** API error', err)
dbx.close()
return False
mtime = osp.getmtime(lfilename)
with open(lfilename, 'rb') as f:
ldata = f.read()
upload_tries = 0
while upload_tries < max_tries:
try:
res = dbx.files_upload(
ldata, dfilename,
dropbox.files.WriteMode.overwrite,
client_modified=datetime.datetime(*time.gmtime(mtime)[:6]),
mute=True)
print('uploaded as', res.name.encode('utf8'))
dbx.close()
return True
except dropbox.exceptions.ApiError as err:
print('*** API error', err)
dbx.close()
return False
except ConnectionError as err:
t = exponential_backoff(upload_tries)
print('*** Requests Connection error, sleeping for {:f} s'.format(t), err)
time.sleep(t)
upload_tries += 1
print('*** Max upload tries exceeded')
dbx.close()
return False