新增ucloud的请求失败的重试功能
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
# 公钥
|
# 公钥
|
||||||
|
from ufile import config
|
||||||
|
|
||||||
PUBLIC_KEY = "4Z7QYI7qml36QRjcCjKrls7aHl1R6H6uq"
|
PUBLIC_KEY = "4Z7QYI7qml36QRjcCjKrls7aHl1R6H6uq"
|
||||||
# 私钥
|
# 私钥
|
||||||
PRIVATE_KEY = "FIdW1Kev1Ge3K7GHXzSLyGG1wTnaG6LE9BxmIVubcCaG"
|
PRIVATE_KEY = "FIdW1Kev1Ge3K7GHXzSLyGG1wTnaG6LE9BxmIVubcCaG"
|
||||||
@@ -10,3 +12,6 @@ UPLOAD_SUFFIX = ".cn-sh2.ufileos.com"
|
|||||||
DOWNLOAD_SUFFIX = ".cn-sh2.ufileos.com"
|
DOWNLOAD_SUFFIX = ".cn-sh2.ufileos.com"
|
||||||
# 私空间文件地址过期时间(秒)
|
# 私空间文件地址过期时间(秒)
|
||||||
PRIVATE_EXPIRES = 3600
|
PRIVATE_EXPIRES = 3600
|
||||||
|
|
||||||
|
# 设置默认请求超时时间
|
||||||
|
config.set_default(connection_timeout=60)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# https://github.com/ucloud/ufile-sdk-python
|
# https://github.com/ucloud/ufile-sdk-python
|
||||||
import logging
|
import logging
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
from ufile import filemanager
|
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):
|
def get_private_url(key, bucket=BUCKET):
|
||||||
# 判断文件是否存在
|
for i in range(3):
|
||||||
_, resp = UFILE_HANDLER.head_file(bucket, key)
|
# 判断文件是否存在
|
||||||
if resp.status_code != 200:
|
_, resp = UFILE_HANDLER.head_file(bucket, key)
|
||||||
logging.warning(f"uCloud中未找到({key})! status: {resp.status_code} error: {resp.error}")
|
if resp.status_code == -1:
|
||||||
return None
|
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
|
||||||
# url = get_ufile_handler.public_download_url(bucket, key)
|
# url = get_ufile_handler.public_download_url(bucket, key)
|
||||||
|
|
||||||
# 获取私有空间下载url, expires为下载链接有效期,单位为秒
|
# 获取私有空间下载url, expires为下载链接有效期,单位为秒
|
||||||
url = UFILE_HANDLER.private_download_url(bucket, key, expires=PRIVATE_EXPIRES)
|
url = UFILE_HANDLER.private_download_url(bucket, key, expires=PRIVATE_EXPIRES)
|
||||||
return url
|
return url
|
||||||
|
|
||||||
|
|
||||||
def copy_file(source_bucket, source_key, target_bucket, target_key):
|
def copy_file(source_bucket, source_key, target_bucket, target_key):
|
||||||
# 拷贝文件
|
for i in range(3):
|
||||||
ret, resp = UFILE_HANDLER.copy(target_bucket, target_key, source_bucket, source_key)
|
# 拷贝文件
|
||||||
if resp.status_code != 200:
|
ret, resp = UFILE_HANDLER.copy(target_bucket, target_key, source_bucket, source_key)
|
||||||
logging.warning(
|
if resp.status_code == -1:
|
||||||
f"将({source_key})从({source_bucket})拷贝到({target_bucket})失败! status: {resp.status_code} error: {resp.error}")
|
logging.warning(f"uCloud连接失败!即将重试...")
|
||||||
return False
|
sleep(1)
|
||||||
return True
|
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):
|
def upload_file(key, file_path, bucket=BUCKET):
|
||||||
# 普通上传文件至空间
|
for i in range(3):
|
||||||
ret, resp = UFILE_HANDLER.putfile(bucket, key, file_path, header=None)
|
# 普通上传文件至空间
|
||||||
if resp.status_code != 200:
|
ret, resp = UFILE_HANDLER.putfile(bucket, key, file_path, header=None)
|
||||||
logging.warning(f"上传({key})失败! status: {resp.status_code} error: {resp.error}")
|
if resp.status_code == -1:
|
||||||
return False
|
logging.warning(f"uCloud连接失败!即将重试...")
|
||||||
return True
|
sleep(1)
|
||||||
|
continue
|
||||||
|
if resp.status_code != 200:
|
||||||
|
logging.warning(f"上传({key})失败! status: {resp.status_code} error: {resp.error}")
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|||||||
Reference in New Issue
Block a user