問題タブ [httplib2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
138783 参照

python - 104、「接続はピアによってリセットされました」ソケット エラー、またはソケットを閉じると FIN ではなく RST になるのはいつですか?

Python Web サービスとクライアント Web サイトを並行して開発しています。クライアントからサービスに HTTP リクエストを送信すると、1 回の呼び出しで常に socket.py の socket.error が発生します。

Wireshark でリッスンすると、「良い」応答と「悪い」応答が非常によく似ています。

  • OAuth ヘッダーのサイズが原因で、要求は 2 つのパケットに分割されます。サービスは ACK で両方に応答します
  • サービスは、ヘッダーごとに 1 つのパケットで応答を送信します (HTTP/1.0 200 OK、次に Date ヘッダーなど)。クライアントはそれぞれに ACK で応答します。
  • (良い要求) サーバーは FIN、ACK を送信します。クライアントは FIN、ACK で応答します。サーバーは ACK を返します。
  • (不正な要求) サーバーが RST、ACK を送信し、クライアントが TCP 応答を送信しない場合、クライアント側で socket.error が発生します。

Web サービスとクライアントの両方が、glibc-2.6.1 を実行する Gentoo Linux x86-64 ボックスで実行されています。同じ virtual_env 内で Python 2.5.2 を使用しています。

クライアントは、httplib2 0.4.0 を呼び出してリクエストを行う Django 1.0.2 アプリです。OAuth トークンを常に空の文字列に設定して、OAuth 署名アルゴリズムでリクエストに署名しています。

このサービスは、Python の wsgiref.simple_server を使用する Werkzeug 0.3.1 を実行しています。問題なく wsgiref.validator を介して WSGI アプリを実行しました。

これは簡単にデバッグできるように思えますが、サービス側で適切なリクエストを追跡すると、socket._socketobject.close() 関数でデリゲート メソッドをダミー メソッドに変えて、不適切なリクエストのように見えます。send または sendto (どちらかは覚えていません) メソッドがオフになると、FIN または RST が送信され、クライアントは処理を開始します。

「ピアによる接続のリセット」はサービスに責任があるようですが、httplib2も信頼していません。クライアントに過失がある可能性はありますか?

** さらなるデバッグ - Linux 上のサーバーのように見えます **

私は MacBook を持っているので、1 台でサービスを実行し、もう 1 台でクライアント Web サイトを実行してみました。Linux クライアントは、バグ (FIN ACK) なしで OS X サーバーを呼び出します。OS X クライアントはバグ (RST ACK、および (54、「ピアによる接続のリセット」)) を使用して Linux サービスを呼び出します。つまり、Linuxで実行されているサービスのようです。x86_64ですか?悪いglibc?wsgiref? まだ見て...

** さらなるテスト - wsgiref は不安定に見える **

Apache と mod_wsgi を使用して本番環境に移行し、接続のリセットはなくなりました。以下の私の回答を参照してください。ただし、接続のリセットをログに記録して再試行することをお勧めします。これにより、サーバーは開発モードで問題なく動作し、本番環境でも安定して動作します.

0 投票する
1 に答える
1337 参照

python - Python ライブラリ httplib2 は GET 文字列で URI をキャッシュしますか?

次の例では、何が正しくキャッシュされていますか? GET 文字列用にサーバー側で設定する必要がある Vary-Header はありますか?

0 投票する
2 に答える
1963 参照

python - Twisted は httplib2/socket の代替品ですか?

多くの Python ライブラリは、最近作成されたものでも、httplib2 またはソケット インターフェイスを使用してネットワーク タスクを実行します。

これらは、ブロックする性質があるため、明らかに Twisted よりもコーディングが容易ですが、これは他のコード、特に GUI と統合する場合の欠点だと思います。マルチスレッドを回避しながら、スケーラビリティ、同時実行性、または GUI 統合が必要な場合は、Twisted が自然な選択です。

したがって、これらの問題に関する意見に興味があります。

  1. 新しいネットワーキング コード (小さなコマンド ライン ツールを除く) は Twisted で書くべきですか?
  2. 同じプロジェクトに Twisted、http2lib、またはソケット コードを混在させますか?
  3. Twisted はほとんどのライブラリで pythonic ですか (代替よりも複雑で、非標準パッケージへの依存関係を導入しています...)?

編集:これを別の言い方で表現させてください。Twisted を使って新しいライブラリ コードを書くと、その採用の障壁になると思いますか? Twisted には明らかな利点があります (特に、gimel が述べている移植性とスケーラビリティ)。

0 投票する
1 に答える
1604 参照

python - httplib2を使用した認証サーバーとプロキシサーバーの処理

使用する操作の認証が必要なNexusサーバーとの相互作用をテストしようとしていますが、内部プロキシサーバーも処理する必要があります。

私の(限られた)理解に基づいて、オープナーに複数のハンドラーを追加できます。しかし、私はまだ401応答を受け取っています。ユーザー名とパスワードが有効であることを確認しました。これを行うためにCookieが必要かどうか、必要な場合はどのように含まれるかはわかりません。助言がありますか?

これは、結果のURLErrorのヘッダーフィールドです。

更新 NexusはRestletのAuthenticationHelperのカスタムバージョンを実装しているようです。アレックスのおかげで、私は何を探すべきかを知っていました。

0 投票する
1 に答える
1415 参照

python - カスタム Python 認証ハンドラーの実装

の質問への回答は、Nexus が「NxBASIC」と呼ばれるカスタム認証ヘルパーを実装していることを示していました。

Python でハンドラーの実装を開始するにはどうすればよいですか?


アップデート:

Alex の提案に従ってハンドラーを実装することは正しいアプローチのように見えますが、authreq からスキームとレルムを抽出しようとして失敗します。authreq の戻り値は次のとおりです。

AbstractBasicAuthHandler.rx.search(authreq) は単一のタプルのみを返します:

したがって、scheme,realm = mo.groups() は失敗します。私の限られた正規表現の知識から、AbstractBasicAuthHandler の標準正規表現はスキームとレルムに一致するはずですが、そうではないようです。

正規表現は次のとおりです。


更新 2: AbstractBasicAuthHandler の検査から、デフォルトの処理は次のようになります。

これに変更するとうまくいきます。正しいレルムに対してパスワードを設定するだけです。ありがとうアレックス!

0 投票する
3 に答える
4632 参照

python - このエラーの修正または例外の作成方法

任意の Web ページから画像の URL を取得するコードを作成しています。コードは Python であり、BeutifulSoup と httplib2 を使用しています。コードを実行すると、次のエラーが表示されます。

誰かがエラーの修正または例外の作成方法を説明してくれます

0 投票する
6 に答える
12700 参照

javascript - JavaScript 機能を使用したコマンド ライン URL フェッチ

URL を取得するために、php では curl を、Python では httplib2 を使用します。

ただし、ページを読み込んだ後に JavaScript (AJAX) を使用してデータを取得し、後でページの特定のセクションを上書きするだけのページもあります。

では、JavaScript を処理できるコマンド ライン ユーティリティはありますか?

私が言いたいことを知るには、monster.com にアクセスして、仕事を探してみてください。

その後、Ajax がジョブのリストを取得していることがわかります。したがって、キーワード検索に基づいて求人を取得したい場合は、求人のないページが表示されます。

しかし、ブラウザ経由で動作します。

0 投票する
1 に答える
656 参照

python - Pythonを使用してHTTP経由で圧縮コンテンツをダウンロードする

Pythonを使用してWebページをダウンロードするときにHTTP1.1の圧縮を利用するにはどうすればよいですか?

現在、Webコンテンツのダウンロードに組み込みのurllibモジュールを使用しています。ドキュメントを読んでも、実際に圧縮を使用している情報は見つかりませんでした。

すでにurllibに組み込まれていますか、それとも使用できる別のライブラリがありますか?

0 投票する
4 に答える
4625 参照

python - httplib2、複数のCookieを設定する方法は?

ご存知かもしれませんが、多くの場合、HTTPサーバーは単なるsession_idCookie以上のものを送信します。ただし、httplib2は次のように辞書を使用してCookieを処理します。

では、どうすれば追加のCookieを設定できますか?辞書で処理する場合、二重のCookieキーを持つことはできません:S。

御時間ありがとうございます。