2009-12-12 3 views
7

Here in Google App Engines Я получил этот код, который помог бы принести в HTML-код любой веб-страницы по ее адресу:Зачем импортировать urlfetch из Google App Engine?

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

Я не понимаю одну вещь здесь (среди многих других вещей, на самом деле), почему он предложил в этом коде для импорта urlfecth из google.appengine.api? У Python нет этой команды?

ответ

5

google.appengine.api - это библиотека, содержащая версию класса urlfetch Google. Цитирование from the manual:

URL-адрес службы Fetch использует инфраструктуру сети Google, для повышения эффективности и масштабирования целей.

Python также имеет классы поиска URL в своей стандартной библиотеке, но те, которые не могут использовать инфраструктуру, доступную внутри App Engine.

Вкратце google.appengine.api urlfetch более мощный, но от вас ничего не блокирует использование собственного urllib Pythons, что тоже описано на странице руководства, с которой я связан выше.

+0

Благодарим за объяснение и за ссылку – brilliant

+2

, если вы используете httplib или urllib на appengine, он также использует сетевую инфраструктуру google. iirc они были добавлены как обертки для urlfetch и должны вести себя более или менее как их кузены python stdlib :) – tosh

+0

Я вижу. Спасибо. – brilliant

16

У Python есть библиотеки, такие как urllib и httplib для извлечения URL-адресов, но в App Engine все запросы должны проходить через пользовательскую библиотеку urlfetch. App Engine включает в себя заглушки для urllib и httplib, которые заставляют их использовать urlfetch внутри, но если у вас есть выбор, использование urlfetch напрямую более эффективно и гибко.

+1

Спасибо, Ник, за это объяснение. – brilliant

+0

Источник? Из-за соображений безопасности они не позволяют делать сетевые вызовы без использования URL-адреса? – irwinb

+5

@irwinb Источник: Я работал в команде App Engine более 4 лет. Причина заключается в сочетании последствий безопасности неограниченного доступа к сокетам и практических проблем, которые возникают из вашего приложения, работающего на компьютере, который напрямую не разговаривает с внешним миром. –

Смежные вопросы