代码之家  ›  专栏  ›  技术社区  ›  Elliptica

GDrive上传错误500,不返回object

  •  0
  • Elliptica  · 技术社区  · 6 年前

    我有一个google上传管理器,它大部分时间工作正常,但是当上传很多文件时,它会部分中断并返回一个500内部服务器错误(总是在同一个文件上)。

    media_body = MediaFileUpload(filepath, mimetype=mimeType_in, resumable=True)
    
    if create == True:   # CREATE 
        result = self.service.files().create(
                                                body=meta,
                                                media_body=media_body).execute()
    else:   # REPLACE
        result = self.service.files().update(
                                            body=meta,
                                            media_body=media_body,
                                            fileId=fileID).execute()
    

    问题是,当这个错误发生时,它是一个抛出的异常,而不是在结果中存储的任何东西(事实上,结果将不存在)。因此,我无法得到任何信息。我想可能是因为文件太大或是其他原因,但我无法继续,因为我没有任何信息。思想?

    2 回复  |  直到 6 年前
        1
  •  0
  •   MαπμQμαπkγVπ.0    6 年前

    在Drive API文档中,声明了“ “”是处理请求时发生的意外错误。

    建议的操作:使用 exponential backoff 正在重试非等幂请求。

    这里面暗含着同样的想法 SO post .

    指数退避 是网络应用程序的标准错误处理策略,其中客户端定期重试失败的 请求的时间越来越长。指数退避可能是 处理这些错误的好策略。

    This SO post 也有助于上传大文件。

    resumable media upload or chunked upload 上传时。

    对于大型媒体文件,可以使用可恢复的媒体上载发送 文件,允许以较小的块上载文件。这是 网络中断或其他传输的可能性

        2
  •  0
  •   Elliptica    6 年前

    经过多次测试,我发现错误的原因是在上载过程中由于编码问题导致的mimetype转换失败。除了HTTP 500,没有其他信息返回,但是关闭转换解决了这个问题。所以如果你得到一个 500 Internal Server error (窗口)或 SSLError: [SSL: SSLV3_ALERT_BAD_RECORD_MAC] sslv3 alert bad record mac