diff --git a/biliarchiver/_biliarchiver_upload_bvid.py b/biliarchiver/_biliarchiver_upload_bvid.py index 09dd1c1..163fd44 100644 --- a/biliarchiver/_biliarchiver_upload_bvid.py +++ b/biliarchiver/_biliarchiver_upload_bvid.py @@ -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: