为什么要从Google App Engines导入urlfetch?

bri*_*ant 7 python import google-app-engine urlfetch

在Google App Engines中,我获得了此代码,可帮助通过其URL获取任何网页的HTML代码:

from google.appengine.api import urlfetch
url = "http://www.google.com/"
result = urlfetch.fetch(url)
if result.status_code == 200:
doSomethingWithResult(result.content)
Run Code Online (Sandbox Code Playgroud)

我不明白这里有一件事(事实上还有很多其他事情)为什么在这段代码中建议从google.appengine.api导入urlfecth?Python没有自己的命令吗?

Nic*_*son 16

Python具有用于获取URL的urllib和httplib等库,但在App Engine上,所有请求都必须通过自定义urlfetch库.App Engine包含urllib和httplib的存根,这些存根使得它们在内部使用urlfetch,但是如果你有选择,直接使用urlfetch会更加高效和灵活.

  • @irwinb资料来源:我在App Engine团队工作了4年多.原因在于无限制套接字访问的安全隐患,以及在不直接与外界通信的计算机上运行的应用程序产生的实际问题. (5认同)

Ant*_*nna 5

google.appengine.api是一个包含Google版本的urlfetch类的库.引自手册:

URL抓取服务使用Google的网络基础架构来实现效率和扩展.

Python在其标准库中也有url检索类,但是那些无法使用App Engine中可用的基础结构.

简而言之,google.appengine.api urlfetch功能更强大,但是你也没有阻止使用Pythons自己的urllib,这也在我上面链接的手册页中有所描述.

  • 如果您在appengine上使用httplib或urllib,它也会使用谷歌的网络基础设施.iirc他们被添加为urlfetch的包装器,并且应该或多或少地表现为他们的python stdlib cousins :) (2认同)
  • 托什提出了一个非常有效的观点.如果标准的python url也使用相同的基础设施,我认为使用url fetch毫无意义,因为当你想要退出GAE时,它会降低应用程序的可移植性. (2认同)