【问题标题】:Why is urlfetch throwing Download Errors when calling some Google services?为什么调用某些 Google 服务时 urlfetch 会抛出下载错误?
【发布时间】:2010-01-02 09:51:16
【问题描述】:

我注意到某些 Google 服务正在阻止来自 App Engine 服务器的请求,从而导致 urlfetch 下载错误。一个示例是 feedproxy.google.com 网址(例如,http://feedproxy.google.com/~r/blabbermouth/~3/cAk78LX4gJE/news.aspx)。

这发生在我尝试过的所有应用程序上,包括我以前从未用于任何类型的 url 获取的应用程序 ID。此行为也不会在本地 SDK 上发生。这让我相信这是在发出请求时使用任何 GAE IP 地址的结果。

奇怪的是,它会导致抛出 DownloadError,而不是成功检索到的响应中的错误 status_code。在本地使用 urlfetch 或 httplib 工作得很好,所以这个 DownloadError 我还没有理解,或者它只是一个错误,在这种情况下我会提交一张票。

【问题讨论】:

  • 有人提到 (groups.google.com/group/google-appengine/msg/98b38f1f5cdb592c) 添加 headers={ "Accept-Encoding" : "identity" },但这似乎没有帮助。也许您可以尝试设置一个简单的服务器,以查看 apppot 发送的请求标头与您的本地计算机之间的区别。也许这里有一些类似于接受编码头问题的问题。
  • 不,标题不是问题。我已经在本地和生产环境中尝试了完全相同的 fetch 调用,AFAIK 的唯一区别是使用的 IP 地址。

标签: google-app-engine ip-address urlfetch


【解决方案1】:

如果没有查看您的代码,我会猜测,但由于您所关注的 URL 是要重定向的,您是否允许在您的呼叫中进行重定向?注意follow_redirects=True

例如urlfetch.fetch(url, payload=None, method=GET, headers={}, allow_truncated=False, follow_redirects=True, deadline=None)

http://code.google.com/appengine/docs/python/urlfetch/fetchfunction.html

【讨论】:

  • 不设置 follow_redirects 只是意味着我应该得到一个 301 或 302 状态码的响应。抛出的错误意味着完全不同的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
相关资源
最近更新 更多