使用Google AppEngine Urlfetch而不是urllib2

时间:2012-10-19 10:25:56

标签: security google-app-engine urllib2 choice urlfetch

Google的urlfetch与python lib urllib2有什么区别?

当我遇到Google的urlfetch时,我想也许有安全理由。也许谷歌在苹果网或其他方面更安全?

我有理由选择Google urlfetch而不是urllib2吗?

4 个答案:

答案 0 :(得分:9)

请注意,在GAE urllib中,urllib2和httplib只是UrlFetch的包装器(参见Fetching urls in Python)。

urlfetch模块的一个不同之处是为您提供了制作Asynchronous requests的界面。

答案 1 :(得分:5)

我不为谷歌工作,所以这只是我读过的各种GAE帖子的猜测。 App Engine实例不直接面向互联网,而是隐藏在Google基础架构层之后。当浏览器发出HTTP请求时,它不会直接进入您的实例,而是会访问Google边缘服务器,最终将请求路由到GAE实例。

同样,当发出HTTP请求时,您的实例不仅会打开一个套接字(urllib2通常会这样做),而是将HTTP请求发送到其他Google请求的边缘服务器。在GAE上使用urllib2将使用在urlfetch上运行的GAE特定版本。

答案 2 :(得分:0)

在App Engine中使用标准库没有问题。 Url Fetch Api只是一种服务,可以比urlib2更“轻松”地发出HTTP请求。对于Python中的新手来说,它更容易理解,例如,您可以轻松地使用非阻塞请求。

我建议你在这里阅读一些补充信息:https://developers.google.com/appengine/docs/python/urlfetch/overview

如果谷歌在Python标准库上发现了一些安全问题。我猜它会发送修复;)

答案 3 :(得分:-3)

不同之处在于:urlfetch只有一个功能接口,而urllib和httplib都有一个OO接口。 OO接口非常有用。我在oauth2客户端lib中看到了一个很好的例子,其中请求实例被传递给客户端lib以检查令牌是否有效和授权。