urllib3はスレッドセーフな接続プーリングとファイルポストをサポートするPythonのHTTPライブラリである。
のハイライト:の
  *複数の要求に同じソケット接続を再利用(HTTPConnectionPool)
  *ファイルポスティング(encode_multipart_formdata)
  *内蔵のリダイレクションと再試行します(オプション)
  *スレッドセーフ
のurllibのとurllib2の何が問題なのですか?の
接続の再利用/プーリングとファイル投稿:Pythonの標準ライブラリから欠落している2の重要な機能があります。それは、これらを自分で実装するためにひどく難しいことではありませんが、それは既にあなたのために仕事をしたモジュールを使用する方がはるかに簡単です。
Pythonの標準ライブラリurllibのとurllib2のは、互いとはほとんど関係を持っている。これらは、それぞれが、問題の異なるスコープを解決する、独立したスタンドアロンであるように設計され、urllib3は、同様の静脈に、次のされた。
のはなぜな接続を再利用したいのですか?の
パフォーマンス。普段urllibの呼び出しを行うと、別のソケット接続が各要求で作成されます。 (HTTP 1.1以降でサポート)は、既存のソケットを再利用することで、要求は、サーバの端に少ないリソースを占有し、また、クライアントの終了時に応答時間を短縮します。 (15の接続を使用しています)、プレーンurllibのを使用するよりも(1コネクションを使用)HTTPConnectionPool使用した場合、いくつかの簡単なベンチマーク(テスト/ benchmark.pyを参照)、google.comから15のURLをダウンロードする約2倍高速である。
このライブラリは、に最適です。
  * APIに話す
  *ウェブサイトのクロール
  *、ファイルを投稿リダイレクトを処理することができること、および再試行する任意の状況が便利です。これは、比較的軽量なので、それが何のために使用することができます!
の例:の
もっと素敵な構文強調表示例については、例のページに移動します。
しかし、長い話を短く:
urllib3輸入からHTTPConnectionPool
API_URL = 'http://ajax.googleapis.com/ajax/services/search/web」
http_pool = HTTPConnectionPool.from_url(API_URL)
フィールド= {'V': '1.0'、 'Q': 'urllib3'}
R = http_pool.get_url(API_URL、フィールド)
印刷r.status、r.data P>
のこのリリースのの新機能:
- を追加しましたurllib3.add_stderr_logger()すぐに用urllib3にSTDERRのデバッグログを有効にします。
- ネイティブフルURLます。
- 内蔵のリダイレクトは、ステータスコードが303(問題#11) が 'GET'にメソッドを切り替えます
- urllib3.PoolManagerは、リクエストURIを送信する前に、スキームとホストを取り除きます。 (問題#8)
- Content-Typeヘッダに基づく自動復号が、失敗したときのための新しいurllib3.exceptions.DecodeError例外ます。
- バグを修正。プール立ち退きにクローズ明示的な接続を追加しました。追加urllib3.PoolManager.clear()します。
- 99パーセント - &GT。 100%のユニットテストカバレッジます。
構文解析urllib3.util.parse_url(URL)で利用可能(AUTH、パス、クエリ、フラグメントを含む)
プールの枯渇や漏れ接続(問題#76)と
のバージョン1.4のの新機能である:ます。
- マイナーAppEngineの関連の修正します。
- )は(mimetools.choose_boundaryからuuid.uuid4に切り替えます。
- の改善URL解析。 (問題#73)
- IPv6のURLのサポート。 (問題#72)
のバージョン1.3のの新機能は次のとおりです。
- 事前1.0非推奨APIを削除します。 。
- urllib3.utilサブモジュールにリファクタリングヘルパーます。
- リストのタプル複数の値を持つキーのを支持体に固定され、マルチパートエンコーディング。 (問題#48)
- はPython 3に適切にマージされていませんでし応じた固定の複数のSet-Cookieヘッダ(問題#53)
- Py27とAppEngineのサポート。 (問題#61)
- マイナーencode_multipart_formdataの修正します。
バイト対Pythonの3つの文字列に関連した
のバージョン1.2.2でのの新機能:
- テスト要件を出荷しないのを修正しパッケージングのバグ。 txt。 (問題#47)
のバージョン1.2.1でのの新機能:
- SSLモジュールでない場合に関連する別のバグを修正利用できる。 (問題#41)
- ロケーション解析エラーは今送出から継承urllib3.exceptions.LocationParseErrorを上げます。
のバージョン1.2の新しいのは何ですか。
- (3.2.2でテスト)を加えPython 3のサポート
- (2.6.7、2.7.2でテスト)はPython 2.5をサポートします。 をドロップ
- それをサポートするプラットフォームのための代わりselect.selectの使用select.pollます。
- より積極的な接続再利用するための代わりにQueue.Queueの使用Queue.LifoQueue。 ConnectionPool.QueueClsをオーバーライドすることによって構成します。
- SSLモジュールが利用できない場合、インストール時にはImportErrorを修正しました。 (問題#41)
- 固定PoolManagerはスキーム間でリダイレクト(HTTPなど - > HTTPS)が正しく完了していない。 (V1.1での問題#10によって発見された問題#28、)
- 竜巻の代わりにwebob + eventletを使用するように移植dummyserver。余分なサポートされていないdummyserverテストバックエンドを削除しました。追加されたソケットレベルのテストをします。
- その他のテスト。成果は、ロック解除:99%カバレッジます。 。
のバージョン1.1にの新しいは何をされます:
- 独自のルート名前空間のモジュールにdummyserverリファクタリング(テストのために使用)します。
- Py32のssl_match_hostnameにvendoringによるVerifiedHTTPSConnectionを追加しましたホスト名検証。 (問題#25)
- 固定クロスホストHTTPリダイレクト。 (問題#10)
- 関数urlopenを使用して設定する際に無視されている修正しましたdecode_content。 (問題#27)
- 固定タイムアウト関連のバグ。 (問題#17、#23)
PoolManagerを使用するときに
のバージョン1.0.2でのの新機能:としてのみ存在だろうVerifiedHTTPSConnectionの
- 固定タイプミスバグ手動でオブジェクトを使用している場合。 (ありがとうpyos)
- メイドRecentlyUsedContainer(その結果PoolManager)よりスレッドセーフなミューテックスにアクセスログをラップすることによって。 (感謝@christer)
- メイドRecentlyUsedContainerより辞書のようなテストと、(補正__delitem__と__getitem__行動)。コアurllib3コードに影響を与えるべきではない。
のバージョン1.0.1でのの新機能:
- 同じ接続が返さになるだろうバグを修正プールに二回、余分な&QUOT引き起こし、HttpConnectionPoolがフル&QUOTです。警告をログに記録します。
の要件の
- のPythonます。
コメントが見つかりません