2009-12-12 12 views
7
私はここで一つのことを理解していません。このコードでgoogle.appengine.apiからurlfecthをインポートしますか? Pythonはこのコマンドを自分自身で持っていませんか?

答えて

5

google.appengine.apiは、Googleのバージョンのurlfetchクラスを含むライブラリです。 from the manualを引用:

URLはサービスが効率 とスケーリングのために、Googleの ネットワークインフラストラクチャを使用して取得します。

Pythonには標準ライブラリのurl取得クラスもありますが、それらはApp Engine内で使用できるインフラストラクチャを使用できません。

短いgoog.appengine.apiでurlfetchがより強力ですが、Pythons自身のurllibを使用することから何もブロックされていません。これも上記のリンク先のマニュアルページで説明しています。

+0

説明とリンク – brilliant

+2

のおかげで、appengineでhttplibまたはurllibを使用すると、Googleのネットワークインフラストラクチャも使用されます。 iirc彼らはurlfetchのためのラッパーとして追加され、多かれ少なかれ、彼らのpython stdlibのいとことして動作する必要があります:) – tosh

+0

私は参照してください。ありがとうございました。 – brilliant

16

PythonにはURLを取得するためのurllibやhttplibなどのライブラリがありますが、App Engineではすべてのリクエストがカスタムurlfetchライブラリを経由する必要があります。 App Engineにはurllibとhttplib用のスタブが含まれているため、内部でurlfetchを使用できますが、選択肢がある場合は、urlfetchを直接使用する方が効率的で柔軟性があります。

+1

ありがとう、ニック、この説明のために。 – brilliant

+0

ソース?セキュリティ上の理由から、URLフェッチを使用せずにネットワークコールを行うことはできませんか? – irwinb

+5

@irwinb出典:私はApp Engineチームで4年以上働いていました。その理由は、自由なソケットアクセスのセキュリティへの影響と、外界と直接話していないコンピュータで実行されているアプリから到着する実用的な問題の組み合わせです。 –

関連する問題