异步并发
# python3.*
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
bucket = oss2.Bucket(auth, '<https://oss-cn-hangzhou.aliyuncs.com>', 'qq')
async def save_to_oss_async(bucket, base_url, image, file_name):
in_mem_file = io.BytesIO()
image.save(in_mem_file, format='PNG')
in_mem_file.seek(0)
await asyncio.to_thread(bucket.put_object, f"{base_url}/{file_name}.png", in_mem_file)
async def save_segment_info_to_oss_async(image, mask, result_image):
"""
保存分割信息到 OSS
"""
# 生成唯一 ID
# 获取当前日期
current_date = datetime.now()
year = current_date.year
month = current_date.month
day = current_date.day
# 生成唯一ID
unique_id = uuid.uuid4()
# 获取时分秒
hour = current_date.hour
minute = current_date.minute
second = current_date.second
# 上传文件到 OSS
base_url = f"a/b/c/{year}-{month}-{day}/{year}{month}{day}{hour}{minute}{second}{unique_id}"
# 创建任务列表
tasks = [
save_to_oss_async(bucket, base_url, image, "image"),
save_to_oss_async(bucket, base_url, mask, "mask"),
save_to_oss_async(bucket, base_url, result_image, "result")
]
# 等待所有任务完成
await asyncio.gather(*tasks)
# 保存图片到 oss
asyncio.run(save_segment_info_to_oss_async(image, mask, result_image))