問題タブ [grequests]
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 - github3.py: grequests で使用できますか?
これは今までに出てきたのだろうか?
GitHub Enterprise インスタンスから大量の情報をダウンロードするアプリがあります (現在 github3.py を使用していませんが、github3.py を使用するように変換することを考えています)。基本的に、189 のリポジトリをクロールし、各リポジトリに対して、ブランチ、タグ、およびコミットをプルします。非常に多くの HTTP リクエストを連続して実行する必要があるため、これは明らかにかなり遅いです。
github3.py がgrequestオブジェクトを返すようにして、grequests にリクエストを並行して実行させることができるのだろうか? あるいは、github3.py で「同時実行レベル」を設定し、リクエストを並行して処理できるようにすることで、grequest をラップして非表示にすることもできます。または多分コンテキストマネージャ:
並列化は非常に異なるパラダイムであるため、並列化でうまく機能する API を考え出すのは非常に困難な場合があることを認識しています。これが、私が課題トラッカーをこれでごちゃごちゃにしたくなかった理由です。
python - gevent / requests は、多数の head リクエストを作成中にハングします
100k ヘッドのリクエストを行う必要があり、リクエストに加えて gevent を使用しています。私のコードはしばらく実行されますが、最終的にハングします。なぜハングしているのか、リクエスト内でハングしているのかgevent内でハングしているのかはわかりません。リクエストとgeventの両方でタイムアウト引数を使用しています。
以下のコード スニペットを見て、何を変更すればよいか教えてください。
grequests を試してみましたが、放棄されました。github のプル リクエストも試しましたが、すべて問題があります。
python - セロリ + イベントレット + ノンブロッキング リクエスト
requests
セロリでPythonを使用しworkers
て、多数の(〜10 /秒)API呼び出し(GET、POST、PUT、DELETEを含む)を行っています。各リクエストが完了するまでに約 5 ~ 10 秒かかります。
eventlet
プールで 1000 の同時実行性でセロリ ワーカーを実行してみました。
requests
プロセスをブロックしているため、各同時接続は 1 つの要求を待機しています。
どうすればrequests
非同期にできますか?
python - 単一のリクエストでの grequests の使用
私は最近、職場でgrequests ライブラリを使用して HTTP リクエストを行う内部コードに出くわしました。
しかし、コードを調べていたときに、プログラムが一度に送信する要求は 1 つだけであることに気付きました。たとえば、次の関数を考えてみましょう。
この関数を呼び出すすべてのインスタンスで、関数に渡されるuriは 1 つだけです。つまり、このrun()
関数へのすべての呼び出しは次のようになります。
私は grequests を使用するのが初めてなので、これは本当に従来のリクエストライブラリよりも利点がありますか? ここで grequests を使用すると、コードが過度に複雑になるように思われます。
このコンテキストで grequests を使用すると、プレーンな古いリクエストを使用するよりもパフォーマンスが向上する場合はありますか?
python - json データを grequests で POST しますか?
grequests で非同期 POST リクエストを行う必要があります。
私の投稿本文(json)は次のとおりです。
[0]['params']['id']
これから作成する多くの POST に対して、キーの値を別の URLに変更する必要があります。
だから私はやっている:
myrequests = (grequests.post(POST_URL, data=fgp(a_url) for a_url in all_urls)
私のジェネレータ内包表記のfgp()
メソッドは、送信している POST 本文で[0]['params']['id']
、a_url
渡されたものに変更するメソッドです。
そして、リクエストをレスポンスにマッピングすると:
myresponses = grequests.map(myrequests)
これは、リクエストがあれば何度でも得られるものです (明らかに)。
編集:問題は解決しました:-
requests
私はいろいろ試してみて、モジュールの場合と同じようにヘッダーを挿入しました。
ヘッダー kwarg 引数を設定して、エンコーディングをなしにし、コンテンツ タイプを作成します。
そして今、私は出力を正しく取得しています:
注: 一部のデータを非表示にするために出力を少し編集しました。
python - GRequests でエラーを処理するには?
私はこのコードを持っています
通常の Python エラー メッセージを表示せずにエラーを処理するにはどうすればよいですか?
たとえば、存在しないドメインの場合、「見つかりません」と出力されます。
python - 指数バックオフを使用した grequest
以下は、同時リクエストを行うためのパターンです。
ただし、これはConnectionError: HTTPConnectionPool(host='apicache.vudu.com', port=80): Max retries exceeded with url:
約 5,000 リクエストごとにエラーでクラッシュします。上記を実行するためのより信頼できるパターンは何でしょうか?たとえば、個々のリクエストが機能しない場合、最大 5 回まで URL を再試行しますか?