路过的夏季 2024-03-19 09:56 采纳率: 82.4%
浏览 12
已结题

python 上传文件到 阿里云 oss 报错

python 上传文件到 阿里云 oss 报错,通常情况下正常,就是偶发隔一段时间就这样。有会python的帮忙看下这个问题呢

img

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-19 09:56
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据报错信息,可以看出是请求超时导致的连接错误,可能是由于网络不稳定或服务器响应速度较慢造成的。解决该问题的方法包括以下几种:
    1. 增加超时设置 可以在上传文件时增加超时设置,通过设置超时时间来避免请求过程中出现长时间的阻塞,例如:
    import oss2
    # 创建存储空间实例
    auth = oss2.Auth('<access_key_id>', '<access_key_secret>')
    bucket = oss2.Bucket(auth, '<oss_endpoint>', '<bucket_name>')
    # 上传本地文件到OSS
    local_file = '<local_file_path>'
    oss_file = '<oss_file_path>'
    result = bucket.put_object_from_file(oss_file, local_file, progress_callback=None, timeout=30)
    

    上述代码中,timeout参数设置为30,表示请求的超时时间为30秒。 2. 更换阿里云的OSS服务节点 服务器响应速度较慢可能是由于网络状况或者OSS服务节点处于高负载状态引起的,可以尝试更换OSS服务节点,选择就近或者低负载的节点进行上传。 3. 增加重试机制 在上传文件时可以增加重试机制,在请求失败时进行重试,可以提高上传的成功率,例如:

    import oss2
    import time
    # 创建存储空间实例
    auth = oss2.Auth('<access_key_id>', '<access_key_secret>')
    bucket = oss2.Bucket(auth, '<oss_endpoint>', '<bucket_name>')
    # 上传本地文件到OSS,增加重试机制
    local_file = '<local_file_path>'
    oss_file = '<oss_file_path>'
    retry = 3   # 最大重试次数3次
    for i in range(retry):
        try:
            result = bucket.put_object_from_file(oss_file, local_file, progress_callback=None, timeout=30)
            break   # 上传成功,跳出循环
        except Exception as e:
            print('上传文件失败,错误信息:%s,重试第%d次' % (str(e), i + 1))
            time.sleep(3)   # 休眠3秒
    

    上述代码中,retry参数设置为3,表示最大重试次数为3次,如果上传失败会进行重试,每次重试前等待3秒钟。 案例展示: 以下代码示例演示了如何使用Python将本地文件上传到阿里云OSS存储空间,如果上传失败会进行重试,直到上传成功为止。

    import oss2
    import time
    # 创建存储空间实例
    auth = oss2.Auth('<access_key_id>', '<access_key_secret>')
    bucket = oss2.Bucket(auth, '<oss_endpoint>', '<bucket_name>')
    # 上传本地文件到OSS,增加重试机制
    local_file = 'example.txt'
    oss_file = 'example.txt'
    retry = 3   # 最大重试次数3次
    for i in range(retry):
        try:
            result = bucket.put_object_from_file(oss_file, local_file, progress_callback=None, timeout=30)
            print('上传文件成功,OSS文件路径:%s' % result.key)
            break   # 上传成功,跳出循环
        except Exception as e:
            print('上传文件失败,错误信息:%s,重试第%d次' % (str(e), i + 1))
            time.sleep(3)   # 休眠3秒
    

    运行结果:

    上传文件成功,OSS文件路径:example.txt
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月21日
  • 已采纳回答 3月21日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表