問題タブ [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 - 503 エラーをキャッチしてリクエストを再試行する方法
私はgrequests
約10,000回の呼び出しを行うために使用していますが、これらの呼び出しの一部は503
. 一度に 10,000 件の呼び出しすべてをキューに入れなければ、この問題はなくなります。それを 1000 のグループに分割するとうまくいくようです。503
ただし、このエラーをキャッチして再試行する方法があるかどうか疑問に思っていましたrequest
。
これは、スレッドを呼び出して結合する方法です。
これが本当に漠然としていることはわかっていますが、 を使用してこれが可能かどうかさえわかりませんgrequests
。
私は素朴に試しました
しかし、これはそれを遅くするものではありません。
python - 複数の http get と post
タスクは次のとおりです。
私は現在リクエストライブラリを介してこれを行っていますが、これを1つずつ行うには多くの時間がかかり、最大20,000になる可能性があります.
試してみmultiprocessing
ましたが、何らかの理由で 5000-10000 の get と post を送信した後にハングします。
grequest について読みましたが、そこに書か
Order of these responses does not map to the order of the requests you send out.
れています。送信した get に基づいて各応答を変更する必要があるため、注文が必要です。
ここで最良の選択肢は何ですか?私も読んだことがありますthreading,tornado
が、最初のアプローチを台無しにしてしまったのでmultiprocessing
、もう一度やり直す前に確認したいと思います
python - サイズに関係なく、URL の長いリストに対して Grequests が失敗する
私はフォームのタスクを持っていました:
以前はこれgrequests
を達成していましたが、今55 urls
ではうまくいきました。それから私は試してみました34000
.それはで失敗しまし
Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known')) for request <grequests.AsyncRequest object at 0x1bda93610>
た.
次に、size
パラメーターを使用しgrequests.map
て試し、size
=で64
試しました。同じエラーが発生しました。他にできることはありますか、それとも何か他のものを使用する必要がありgrequests
、このタスクには適していません。
python - requests + grequests: 「接続プールがいっぱいです。接続を破棄しています:」という警告は関連していますか?
私は localhost でサーバーをホストしており、何百もの GET リクエストを非同期で起動したいと考えています。このために私は使用してgrequests
います。すべて正常に動作しているように見えますが、繰り返し警告が表示されます。
警告:requests.packages.urllib3.connectionpool:接続プールがいっぱいです。接続を破棄しています:date.jsontest.com
Session()
検索すると、ここrequests
などでを作成するときに、プールがいっぱいになる問題を回避する方法が示されます。ただし、いくつかのことがあります。
- 警告を回避するための措置を講じなくても、一貫して期待どおりの結果が得られるようです。回避策を使用した場合、 の数を超えるリクエストに対して
pool_maxsize
警告が表示されます。 - リンクされた回避策でも、リクエスト数がプール サイズを超えた場合に警告が表示されます。プールのサイズを一度に超えないようにするために、何らかの調整があると思いました
- 警告を無効にする方法が見つからないようです。
requests.packages.urllib3.disable_warnings()
何もしないようです。
だから私の質問は:
- この警告は実際には何を意味するのでしょうか? 私の解釈では、単にリクエストの発火を落としているだけですが、そうではないようです。
- この警告は
grequests
、特にプール サイズを制限するための措置を講じた場合に、実際にライブラリに関連していますか? テストで予期しない動作を引き起こしたり、期待した結果を誤ったりしていませんか? - 無効にする方法はありますか?
テストするコード:
python - AWS Lambda で Grequest を使用するにはどうすればよいですか?
、、などのバイナリ依存関係を持つ複数のライブラリを使用するLambda
関数があります。過去に、 でそれらを正常にコンパイルして にデプロイしました。Python
numpy
scipy
Pillow
Amazon Linux
Lambda
ただし、最近、依存関係の山に追加Grequest
しましたが、直接関連していないように見えるエラーがスローされていGrequest
ます。このトピックに関する他の質問は行き止まりに終わったので、リングに私の帽子を置きます.
最初のエラーは、単純なエラーGrequests requires gevent
または類似のエラーでした。これを解決するためpip install gevent --no-binary :all:
に、Amazon Linux
インスタンスで実行してみました。それをコードにバンドルして、Lambda にアップロードしました。これはエラーに影響しませんでした。
src
次に、レポからダウンロードしてgevent
コンパイルしmake
ました (レポの README のコマンドは、記録していないエラーをスローしました)。これによりファイルが生成されegg
、それをファイルに変換してwhl
実行しましpip install gevent.whl -t .
た。
結果のコードを my にバンドルしてlambda.zip
アップロードしました。これにより、新しいエラーが発生しました:
module initialization error: lib/libptf77blas.a.gz: invalid ELF header
libptf77blas.a.gz
lib
my のフォルダー内のファイルですlambda.zip
。このフォルダには、、、 などを組み立てながら AWS Linux で構築したファイル.so
がいくつか含まれています。.a
numpy
scipy
Pillow
私の知る限り、これはnumpy
. 私が理解していない部分は次のとおりです。私の関数が使用されていますnumpy
(おそらくlibptf77blas.a.gz
、grequests
.
したがって、コンパイルに関する何かが他の依存ライブラリgevent
の依存関係を壊したか、それ自体が必要であり、それが見つけたものに混乱していると思います。binary
gevent
libptf77blas.a.gz
私はファイルに依存して実行しましたが、参照されていませldd
ん。しかし、私はコンパイルの初心者なので、それはほとんど決定的ではありません..so
gevent
libptf77blas.a.gz
並列アップロードを有効にしたいのGrequests
ですが、これを修正する方法、または使用する代替ライブラリが不明です (通常は JS を作成するため、Python は第 2 言語です)。
python - Python の要求の問題
Python の grequests ライブラリを使用して、同時に複数の URL を呼び出そうとしています。問題は、私が grequests の論理をよく理解していないことです。以下は私のコードのサンプル(編集版)です: -
MyrespArray
は、URL から返された個々の配列を返します。その配列を実行すると、それぞれが同時にではなく、独自のループで実行されているように見えます。より高速な結果を得るために、同時に実行する方法がわかりません。