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)