問題タブ [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.
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 を使用して本番環境に移行し、接続のリセットはなくなりました。以下の私の回答を参照してください。ただし、接続のリセットをログに記録して再試行することをお勧めします。これにより、サーバーは開発モードで問題なく動作し、本番環境でも安定して動作します.
python - Python ライブラリ httplib2 は GET 文字列で URI をキャッシュしますか?
次の例では、何が正しくキャッシュされていますか? GET 文字列用にサーバー側で設定する必要がある Vary-Header はありますか?
python - Twisted は httplib2/socket の代替品ですか?
多くの Python ライブラリは、最近作成されたものでも、httplib2 またはソケット インターフェイスを使用してネットワーク タスクを実行します。
これらは、ブロックする性質があるため、明らかに Twisted よりもコーディングが容易ですが、これは他のコード、特に GUI と統合する場合の欠点だと思います。マルチスレッドを回避しながら、スケーラビリティ、同時実行性、または GUI 統合が必要な場合は、Twisted が自然な選択です。
したがって、これらの問題に関する意見に興味があります。
- 新しいネットワーキング コード (小さなコマンド ライン ツールを除く) は Twisted で書くべきですか?
- 同じプロジェクトに Twisted、http2lib、またはソケット コードを混在させますか?
- Twisted はほとんどのライブラリで pythonic ですか (代替よりも複雑で、非標準パッケージへの依存関係を導入しています...)?
編集:これを別の言い方で表現させてください。Twisted を使って新しいライブラリ コードを書くと、その採用の障壁になると思いますか? Twisted には明らかな利点があります (特に、gimel が述べている移植性とスケーラビリティ)。
python - httplib2を使用した認証サーバーとプロキシサーバーの処理
使用する操作の認証が必要なNexusサーバーとの相互作用をテストしようとしていますが、内部プロキシサーバーも処理する必要があります。
私の(限られた)理解に基づいて、オープナーに複数のハンドラーを追加できます。しかし、私はまだ401応答を受け取っています。ユーザー名とパスワードが有効であることを確認しました。これを行うためにCookieが必要かどうか、必要な場合はどのように含まれるかはわかりません。助言がありますか?
これは、結果のURLErrorのヘッダーフィールドです。
更新 NexusはRestletのAuthenticationHelperのカスタムバージョンを実装しているようです。アレックスのおかげで、私は何を探すべきかを知っていました。
python - カスタム Python 認証ハンドラーの実装
前の質問への回答は、Nexus が「NxBASIC」と呼ばれるカスタム認証ヘルパーを実装していることを示していました。
Python でハンドラーの実装を開始するにはどうすればよいですか?
アップデート:
Alex の提案に従ってハンドラーを実装することは正しいアプローチのように見えますが、authreq からスキームとレルムを抽出しようとして失敗します。authreq の戻り値は次のとおりです。
AbstractBasicAuthHandler.rx.search(authreq) は単一のタプルのみを返します:
したがって、scheme,realm = mo.groups() は失敗します。私の限られた正規表現の知識から、AbstractBasicAuthHandler の標準正規表現はスキームとレルムに一致するはずですが、そうではないようです。
正規表現は次のとおりです。
更新 2: AbstractBasicAuthHandler の検査から、デフォルトの処理は次のようになります。
これに変更するとうまくいきます。正しいレルムに対してパスワードを設定するだけです。ありがとうアレックス!
python - このエラーの修正または例外の作成方法
任意の Web ページから画像の URL を取得するコードを作成しています。コードは Python であり、BeutifulSoup と httplib2 を使用しています。コードを実行すると、次のエラーが表示されます。
誰かがエラーの修正または例外の作成方法を説明してくれます
javascript - JavaScript 機能を使用したコマンド ライン URL フェッチ
URL を取得するために、php では curl を、Python では httplib2 を使用します。
ただし、ページを読み込んだ後に JavaScript (AJAX) を使用してデータを取得し、後でページの特定のセクションを上書きするだけのページもあります。
では、JavaScript を処理できるコマンド ライン ユーティリティはありますか?
私が言いたいことを知るには、monster.com にアクセスして、仕事を探してみてください。
その後、Ajax がジョブのリストを取得していることがわかります。したがって、キーワード検索に基づいて求人を取得したい場合は、求人のないページが表示されます。
しかし、ブラウザ経由で動作します。
python - Pythonを使用してHTTP経由で圧縮コンテンツをダウンロードする
Pythonを使用してWebページをダウンロードするときにHTTP1.1の圧縮を利用するにはどうすればよいですか?
現在、Webコンテンツのダウンロードに組み込みのurllibモジュールを使用しています。ドキュメントを読んでも、実際に圧縮を使用している情報は見つかりませんでした。
すでにurllibに組み込まれていますか、それとも使用できる別のライブラリがありますか?
python - httplib2、複数のCookieを設定する方法は?
ご存知かもしれませんが、多くの場合、HTTPサーバーは単なるsession_idCookie以上のものを送信します。ただし、httplib2は次のように辞書を使用してCookieを処理します。
では、どうすれば追加のCookieを設定できますか?辞書で処理する場合、二重のCookieキーを持つことはできません:S。
御時間ありがとうございます。