From 2d727699f83fe95e8dfeabb719a3f57b7580d81d Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Fri, 16 Aug 2024 23:54:31 -0400 Subject: [PATCH] speed improvements --- backend/endpoints/rom.py | 35 +++++++++++-------- .../models/Body_add_roms_api_roms_post.ts | 2 +- poetry.lock | 1 - 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/backend/endpoints/rom.py b/backend/endpoints/rom.py index 73fc1d249..4915cc00b 100644 --- a/backend/endpoints/rom.py +++ b/backend/endpoints/rom.py @@ -81,12 +81,14 @@ async def add_roms( skipped_files = [] for file in files: - if bool(os.path.exists(f"{roms_path}/{file.filename}")): + file_location = f"{roms_path}/{file.filename}" + + if await Path(file_location).exists(): + log.warning(f" - Skipping {file.filename} since the file already exists") skipped_files.append(file.filename) continue log.info(f" - Uploading {file.filename}") - file_location = f"{roms_path}/{file.filename}" file_size = os.fstat(file.file.fileno()).st_size uploaded_size = 0 start_time = datetime.now().timestamp() @@ -97,22 +99,25 @@ async def add_roms( if not chunk: break await f.write(chunk) - uploaded_size += len(chunk) - await socket_handler.socket_server.emit( - "upload:in_progress", - { - "filename": file.filename, - "file_size": file_size, - "uploaded_size": uploaded_size, - "upload_speed": round( - uploaded_size / (datetime.now().timestamp() - start_time) - ), - }, - ) - uploaded_files.append(file.filename) + # Emit progress update roughly every 1 MB uploaded + if uploaded_size % (1024 * 1024 * 1) == 0 or uploaded_size == file_size: + elapsed_time = datetime.now().timestamp() - start_time + upload_speed = ( + round(uploaded_size / elapsed_time) if elapsed_time > 0 else 0 + ) + await socket_handler.socket_server.emit( + "upload:in_progress", + { + "filename": file.filename, + "file_size": file_size, + "uploaded_size": uploaded_size, + "upload_speed": upload_speed, + }, + ) + uploaded_files.append(file.filename) await socket_handler.socket_server.emit( "upload:complete", { diff --git a/frontend/src/__generated__/models/Body_add_roms_api_roms_post.ts b/frontend/src/__generated__/models/Body_add_roms_api_roms_post.ts index 084f97f00..78f972609 100644 --- a/frontend/src/__generated__/models/Body_add_roms_api_roms_post.ts +++ b/frontend/src/__generated__/models/Body_add_roms_api_roms_post.ts @@ -4,6 +4,6 @@ /* eslint-disable */ export type Body_add_roms_api_roms_post = { - roms: Array; + files: Array; }; diff --git a/poetry.lock b/poetry.lock index 61cfd2f60..9926bc1aa 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2189,7 +2189,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},