aboutsummaryrefslogtreecommitdiff
path: root/utils/upload.py
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2023-06-27 22:48:56 +0800
committerKunoiSayami <[email protected]>2023-06-27 22:48:56 +0800
commit8ab387ac393684a1e40ef3383278a93c63d2f775 (patch)
treeb80abca5d28ce5f1f053bbcf3753f51642ae198b /utils/upload.py
parent3d6ae9742a1ce72292fb47e25948f0614d1a30ea (diff)
feat: Add retry option while upload
Signed-off-by: KunoiSayami <[email protected]>
Diffstat (limited to 'utils/upload.py')
-rwxr-xr-xutils/upload.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/utils/upload.py b/utils/upload.py
index 303273a..d3605cf 100755
--- a/utils/upload.py
+++ b/utils/upload.py
@@ -23,6 +23,7 @@ def sizeof_fmt(num: int, suffix: str = "B"):
return f"{num:.1f}Yi{suffix}"
+# TODO: use upload in chunks to big file
async def send_file(
session: aiohttp.ClientSession, args: argparse.Namespace, file: str
) -> None:
@@ -47,7 +48,7 @@ async def main(args: argparse.Namespace) -> int:
return 0
async with aiohttp.ClientSession(
- raise_for_status=True, timeout=aiohttp.ClientTimeout(60)
+ raise_for_status=True, timeout=aiohttp.ClientTimeout(30)
) as session:
async with session.post(
args.remote_address, data=build_data(args, "REQUIRE_CLEAN")
@@ -55,7 +56,13 @@ async def main(args: argparse.Namespace) -> int:
pass
for file in pending_upload:
logger.info("Start upload %s (%s)", file, sizeof_fmt(os.stat(file).st_size))
- await send_file(session, args, file)
+ for retries in range(3):
+ try:
+ await send_file(session, args, file)
+ break
+ except asyncio.TimeoutError:
+ if retries == 2:
+ raise
async with session.post(args.remote_address, data=build_data(args, "UPLOADED")):
pass