【问题标题】:Got 503 error when uploading multipart via google drive sdk v2通过 google drive sdk v2 上传分段时出现 503 错误
【发布时间】:2012-07-03 23:45:29
【问题描述】:

当我尝试通过 sdk v2 将多部分内容发布到谷歌驱动器时,出现 503 错误,显示“服务不可用”。我得到了一个空的响应内容和一个如下的标题:

{'content-length': '0', 'x-google-cache-control': 'remote-fetch', 'expires': 'Fri, 01 Jan 1990 00:00:00 GMT', 'server': 'HTTP Upload Server Built on Jun 14 2012 02:12:09 (1339665129)', 'via': 'HTTP/1.1 GWA', 'pragma': 'no-cache', 'cache-control': 'no-cache, no-store, must-revalidate', 'date': 'Tue, 03 Jul 2012 23:12:09 GMT', 'content-type': 'text/html; charset=UTF-8'}

这是我发布的内容:

POST /upload/drive/v2/files?uploadType=multipart

Authorization: Bearer <Access token>
Content-Length: <length>
Content-Type: multipart/related; boundary="<a base64 encoded guid>"

--<a base64 encoded guid>
Content-Type: application/json

{"title": "test.jpg", "mimeType":"image/jpeg", "parents":[]}
--<a base64 encoded guid>
Content-Type: image/jpeg
Content-Transfer-Encoding: base64

<base64 encoded binary data>
--<a base64 encoded guid>--

我做错了吗?我可以通过 POST 成功创建元数据,然后使用 uploadType=media 进行 PUT 更新,但我不想进行两次 API 调用。

有什么想法吗?

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

    可能不会。 503 错误只是表示服务器停机以进行维修或其他原因。它对 503 错误的响应能力最低,但它基本上已经关闭。如果您想了解更多信息,请阅读以下内容:

    http://www.checkupdown.com/status/E503.html
    

    【讨论】:

    • 感谢 Cliff,但自从 Google 上周发布了 Google Drive SDK v2 以来,它就再也没有用过。这就是为什么我想知道我是否做错了什么。
    • 对,这种情况我们建议你重试请求。
    • 我指数重试了 5 次,它没有帮助。我不认为这是一个重试问题,我们会重试,因为我们可能会遇到随机网络问题,但在这种情况下,我相信它根本不起作用。
    • 算了,我在我的代码中发现了一个愚蠢的错字,现在它可以工作了。谢谢大家。
    【解决方案2】:

    嗨,克里斯:这就是我正在做的事情......

    url = 'https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart'
    
    boundary = base64.b64encode(uuid.uuid4().bytes)
    parts = []
    parts.append('--' + boundary)
    parts.append('Content-Type: application/json')
    parts.append('')
    parts.append(json.dumps({
        'title': name,
        'mimeType': 'image/jpeg',
        'parents': [{
            'kind': 'drive#file',
            'id': folderId
            }] if folderId else []
        }))
    parts.append('--' + boundary)
    parts.append('Content-Type: image/jpeg')
    parts.append('Content-Transfer-Encoding: base64')
    parts.append('')
    parts.append(base64.b64encode(content))
    parts.append('--' + boundary + '--')
    parts.append('')
    body = '\r\n'.join(parts)
    
    headers = {
        'Content-Type': 'multipart/related; boundary="%s"' % boundary,
        'Content-Length': str(len(body)),
        'Authorization': 'Bearer %s' % access_token
        }
    response = urlfetch.fetch(url, payload=body, method='POST', headers=headers)
    assert response.status_code == 200, '%s - %s' % (response.status_code, response.content)
    r = json.loads(response.content)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多