【问题标题】:urllib2.urlopen fails in deployed appurllib2.urlopen 在部署的应用程序中失败
【发布时间】:2012-08-07 08:58:56
【问题描述】:

我想知道为今天刚刚更改的 url 获取请求提供服务的应用引擎代理是否存在某些限制。例如,这个 url http://www.google.com/ig/calculator?q=1eur=?usd 直到几个小时前才顺利运行。这是我现在遇到的错误

http://www.google.com/ig/calculator?q=1eur=?usd 返回错误:HTTP 错误 503:服务不可用

请注意,在 SDK(使用我的本地互联网连接)中,以下代码有效。 'curl http://www.google.com/ig/calculator?q=1eur=?usd' 也有效,所以我不认为是谷歌限制请求不是来自最终用户浏览器(即没有无用的用户代理)。这可能是几个小时前在应用引擎基础架构中发生的变化。

  url = 'http://www.google.com/ig/calculator?q=1eur=?usd'
    request = urllib2.Request(url = url, data = None)

    try:
        response = urllib2.urlopen(request)
    except urllib2.URLError, e:
        raise Exception("%s returned an error: %s" % (url, e))

【问题讨论】:

  • 你试过urlfetch.fetch吗?还有什么例外?我认为503也不例外。
  • 可能是服务限制了来自同一 IPAddress 的请求数。您每天发送多少个请求(尽管它们可能是使用该服务的其他 appengine 应用程序,这也会导致限制)?有没有不出错的时候?
  • 好吧,我从 cron 执行这个。每小时一次,所以不要滥用它。
  • 是的,没关系。错误 503: Service Unavailable 确实是 Exception 错误。自然是对应 503 HTTP 返回码。

标签: python google-app-engine igoogle


【解决方案1】:

正如 cmets 中所述,您很可能会看到受到限制。 iGoogle 托管了许多私有(但不是秘密)API,供在页面上运行的由 Google 创作的小工具使用(天气 API 是另一个广泛使用的示例)。但是,它们并不是真正供非 Google 小工具或应用程序使用的,它们的实现可以(并且确实)在不通知的情况下发生更改。

此外,iGoogle is a deprecated product。我预计这些实用程序 API 将与 iGoogle 关闭(2013 年 11 月 1 日)同时消失。如果您不希望您的应用程序在 iGoogle 消失后中断,我建议您为该信息寻找其他来源。

【讨论】:

  • 有道理,我在谷歌上搜索了一个很好的欧元/美元汇率免费来源,结果出现了。我不需要最新的汇率。不知道 igoogle 会在一年内被弃用,所以最好找一个替代品。顺便说一句,突然间,它又开始工作了,也许是打嗝。我猜会将其标记为已回答。谢谢
猜你喜欢
  • 2012-05-25
  • 2020-06-08
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-20
  • 2018-10-11
相关资源
最近更新 更多