2009-12-12 2 views
7

Here in Google App Engines 나는 그것의 URL에 의해 웹 페이지의 HTML 코드를 가져 도움이 될이 코드를 가지고 :이 제안 이유 (사실, 많은 다른 것들 사이) 내가 여기에 한 가지를 이해하지 못하는Google App Engine에서 urlfetch를 가져 오는 이유는 무엇입니까?

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

을 이 코드에 google.appengine.api에서 urlfecth 가져? 파이썬은이 명령 onits 소유 없음?

답변

5

google.appengine.api는 Google 버전의 urlfetch 클래스가 포함 된 라이브러리입니다. from the manual 인용 :

URL은 서비스를 반입하는 것은 효율성 및 확장을 위해 구글의 네트워크 인프라를 사용합니다.

Python에는 표준 라이브러리에도 url 검색 클래스가 있지만 App Engine 내부에서 사용할 수있는 인프라는 사용할 수 없습니다.

google.appengine.api urlfetch가 더 강력하지만 Pythons 자신의 urllib을 사용하는 것이 차단되어 있지 않으므로 위의 링크 된 매뉴얼 페이지에도 설명되어 있습니다.

+0

설명과 링크 – brilliant

+2

에 감사드립니다. apppline에서 httplib 또는 urllib를 사용하면 Google 네트워크 인프라도 사용합니다. iirc 그들은 urlfetch에 대한 래퍼로 추가되었고, 파이썬 stdlib 사촌 인 것처럼 더 많이 또는 덜 행동해야합니다. – tosh

+0

알겠습니다. 고맙습니다. – brilliant

16

파이썬에는 URL 가져 오기를위한 urllib 및 httplib과 같은 라이브러리가 있지만 App Engine에서는 모든 요청이 맞춤 urlfetch 라이브러리를 통과해야합니다. App Engine에는 urllib 및 httplib에 대한 스텁이있어 내부적으로 urlfetch를 사용하게하지만 선택 사항이있는 경우 urlfetch를 직접 사용하는 것이 더 효율적이고 유연합니다.

+1

고맙습니다, 닉,이 설명에 대해. – brilliant

+0

출처 URL Fetch를 사용하지 않고 네트워크 호출을 허용하지 않는 보안상의 이유로? – irwinb

+5

@irwinb 출처 : App Engine 팀에서 4 년 이상 근무했습니다. 그 이유는 자유로운 소켓 액세스의 보안 함의와 외부 세계와 직접 통화하지 않는 컴퓨터에서 실행되는 앱에서 발생하는 실용적인 문제의 결합입니다. –

관련 문제