diff --git a/ucloud/__init__.py b/ucloud/__init__.py index 44373b0..438f480 100644 --- a/ucloud/__init__.py +++ b/ucloud/__init__.py @@ -1,4 +1,6 @@ # 公钥 +from ufile import config + PUBLIC_KEY = "4Z7QYI7qml36QRjcCjKrls7aHl1R6H6uq" # 私钥 PRIVATE_KEY = "FIdW1Kev1Ge3K7GHXzSLyGG1wTnaG6LE9BxmIVubcCaG" @@ -10,3 +12,6 @@ UPLOAD_SUFFIX = ".cn-sh2.ufileos.com" DOWNLOAD_SUFFIX = ".cn-sh2.ufileos.com" # 私空间文件地址过期时间(秒) PRIVATE_EXPIRES = 3600 + +# 设置默认请求超时时间 +config.set_default(connection_timeout=60) diff --git a/ucloud/ucloud.py b/ucloud/ucloud.py index 37e87f7..a62c940 100644 --- a/ucloud/ucloud.py +++ b/ucloud/ucloud.py @@ -1,5 +1,6 @@ # https://github.com/ucloud/ufile-sdk-python import logging +from time import sleep from ufile import filemanager @@ -9,34 +10,49 @@ UFILE_HANDLER = filemanager.FileManager(PUBLIC_KEY, PRIVATE_KEY, UPLOAD_SUFFIX, def get_private_url(key, bucket=BUCKET): - # 判断文件是否存在 - _, resp = UFILE_HANDLER.head_file(bucket, key) - if resp.status_code != 200: - logging.warning(f"uCloud中未找到({key})! status: {resp.status_code} error: {resp.error}") - return None + for i in range(3): + # 判断文件是否存在 + _, resp = UFILE_HANDLER.head_file(bucket, key) + if resp.status_code == -1: + logging.warning(f"uCloud连接失败!即将重试...") + sleep(1) + continue + if resp.status_code != 200: + logging.warning(f"uCloud中未找到({key})! status: {resp.status_code} error: {resp.error}") + return None - # 获取公有空间下载url - # url = get_ufile_handler.public_download_url(bucket, key) + # 获取公有空间下载url + # url = get_ufile_handler.public_download_url(bucket, key) - # 获取私有空间下载url, expires为下载链接有效期,单位为秒 - url = UFILE_HANDLER.private_download_url(bucket, key, expires=PRIVATE_EXPIRES) - return url + # 获取私有空间下载url, expires为下载链接有效期,单位为秒 + url = UFILE_HANDLER.private_download_url(bucket, key, expires=PRIVATE_EXPIRES) + return url def copy_file(source_bucket, source_key, target_bucket, target_key): - # 拷贝文件 - ret, resp = UFILE_HANDLER.copy(target_bucket, target_key, source_bucket, source_key) - if resp.status_code != 200: - logging.warning( - f"将({source_key})从({source_bucket})拷贝到({target_bucket})失败! status: {resp.status_code} error: {resp.error}") - return False - return True + for i in range(3): + # 拷贝文件 + ret, resp = UFILE_HANDLER.copy(target_bucket, target_key, source_bucket, source_key) + if resp.status_code == -1: + logging.warning(f"uCloud连接失败!即将重试...") + sleep(1) + continue + if resp.status_code != 200: + logging.warning( + f"将({source_key})从({source_bucket})拷贝到({target_bucket})失败! status: {resp.status_code} error: {resp.error}") + return False + return True def upload_file(key, file_path, bucket=BUCKET): - # 普通上传文件至空间 - ret, resp = UFILE_HANDLER.putfile(bucket, key, file_path, header=None) - if resp.status_code != 200: - logging.warning(f"上传({key})失败! status: {resp.status_code} error: {resp.error}") - return False - return True + for i in range(3): + # 普通上传文件至空间 + ret, resp = UFILE_HANDLER.putfile(bucket, key, file_path, header=None) + if resp.status_code == -1: + logging.warning(f"uCloud连接失败!即将重试...") + sleep(1) + continue + if resp.status_code != 200: + logging.warning(f"上传({key})失败! status: {resp.status_code} error: {resp.error}") + return False + return True