fix: handle upload failures and retry (#19)

* fix: handle upload failures and retry

* chore: only retry if EOF or SSL error

---------

Co-authored-by: yzqzss <30341059+yzqzss@users.noreply.github.com>
This commit is contained in:
Ovler 2024-06-20 10:49:51 +08:00 committed by GitHub
parent 7b2300d320
commit 7e55bb3298
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -232,16 +232,30 @@ def _upload_bvid(
print(md)
if filedict:
r = item.upload(
files=filedict,
metadata=md,
access_key=access_key,
secret_key=secret_key,
verbose=True,
queue_derive=True,
retries=5,
)
upload_retry = 5
while upload_retry >= 0:
try:
r = item.upload(
files=filedict,
metadata=md,
access_key=access_key,
secret_key=secret_key,
verbose=True,
queue_derive=True,
retries=5,
)
break
except Exception as e:
if "EOF" in str(e) or "SSL" in str(e):
upload_retry -= 1
print(e)
if upload_retry < 0:
raise e
print(f"Upload failed, retrying ({upload_retry}) ...")
time.sleep(min(30 * (6 - upload_retry), 240))
continue
else:
raise e
tries = 100
item = get_item(remote_identifier) # refresh item
while not item.exists and tries > 0: