From ef3edafcd640f28372f9a1d58adf42468ae3ab49 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 26 May 2025 16:17:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81rclone=E5=A4=9A=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- util/oss.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/util/oss.py b/util/oss.py index a213a2f..712f7fc 100644 --- a/util/oss.py +++ b/util/oss.py @@ -23,6 +23,25 @@ def upload_to_oss(url, file_path): span.set_attribute("file.size", os.path.getsize(file_path)) max_retries = 5 retries = 0 + if os.getenv("UPLOAD_METHOD") == "rclone": + with tracer.start_as_current_span("rclone_to_oss") as r_span: + replace_map = os.getenv("RCLONE_REPLACE_MAP") + r_span.set_attribute("rclone.replace_map", replace_map) + if replace_map != "": + replace_list = [i.split("|", 1) for i in replace_map.split(",")] + new_url = url + for (_src, _dst) in replace_list: + new_url = new_url.replace(_src, _dst) + new_url = new_url.split("?", 1)[0] + r_span.set_attribute("rclone.target_dir", new_url) + if new_url != url: + result = os.system(f"rclone copyto --no-check-dest --ignore-existing --multi-thread-chunk-size 32M --multi-thread-streams 8 {file_path} {new_url}") + r_span.set_attribute("rclone.result", result) + if result == 0: + span.set_status(Status(StatusCode.OK)) + return True + else: + span.set_status(Status(StatusCode.ERROR)) while retries < max_retries: with tracer.start_as_current_span("upload_to_oss.request") as req_span: req_span.set_attribute("http.retry_count", retries)