Files
ieemoo-ai-searchv2/utils/up_load_file.py
2023-11-29 15:23:08 +08:00

69 lines
2.2 KiB
Python

from obs import ObsClient
import obs
from utils.config import cfg
from qcloud_cos import CosConfig,CosS3Client
from qcloud_cos.cos_exception import CosClientError, CosServiceError
from minio import Minio
from minio.error import S3Error
def obsInit():
print('start init obs <<')
obsClient = ObsClient(
access_key_id=cfg.obs_access_key_id,
secret_access_key=cfg.obs_secret_access_key,
server=cfg.obs_server)
bucketName = cfg.obs_bucketName
headers = obs.SetObjectMetadataHeader()
headers.cacheControl = "no-cache"
return obsClient, headers
def cosInit():
print('start init cos <<')
secret_id = cfg.cos_secret_id
secret_key = cfg.cos_secret_key
region = cfg.cos_region
config = CosConfig(Region=region, Secret_id=secret_id, Secret_key=secret_key)
client = CosS3Client(config)
return client
def s3Init():
print('start init s3 <<')
secret_id = cfg.s3_secret_id
secret_key = cfg.s3_secret_key
region = cfg.s3_region
client = Minio(region, secure=False, access_key=secret_id, secret_key=secret_key)
return client
class up_load:
def __init__(self):
if cfg.cos:
self.cosclient = cosInit()
if cfg.obs:
self.obsclient, self.headers = obsInit()
if cfg.s3:
self.s3client = s3Init()
def upLoad(self, key=None, datapath=None):
# 使用高级接口断点续传,失败重试时不会上传已成功的分块(这里重试10次)
response = 'get re'
if cfg.cos:
for i in range(0, 10):
try:
response = self.cosclient.upload_file(
Bucket=cfg.cos_Bucket,
Key=key,
LocalFilePath=datapath)
break
except CosClientError or CosServiceError as e:
print(e)
if cfg.obs:
response = self.obsclient.putFile(cfg.obs_bucketName, key, datapath)
if cfg.s3:
found = self.s3client.bucket_exists(cfg.s3_Bucket)
if not found:
self.s3client.make_bucket(cfg.s3_Bucket)
self.s3client.fput_object(cfg.obs_bucketName, key, datapath)
return response