問題タブ [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.

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

python - 503 エラーをキャッチしてリクエストを再試行する方法

私はgrequests約10,000回の呼び出しを行うために使用していますが、これらの呼び出しの一部は503. 一度に 10,000 件の呼び出しすべてをキューに入れなければ、この問題はなくなります。それを 1000 のグループに分割するとうまくいくようです。503ただし、このエラーをキャッチして再試行する方法があるかどうか疑問に思っていましたrequest

これは、スレッドを呼び出して結合する方法です。

これが本当に漠然としていることはわかっていますが、 を使用してこれが可能かどうかさえわかりませんgrequests

私は素朴に試しました

しかし、これはそれを遅くするものではありません。

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

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、もう一度やり直す前に確認したいと思います

0 投票する
0 に答える
226 参照

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、このタスクには適していません。

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

python - requests + grequests: 「接続プールがいっぱいです。接続を破棄しています:」という警告は関連していますか?

私は localhost でサーバーをホストしており、何百もの GET リクエストを非同期で起動したいと考えています。このために私は使用してgrequestsいます。すべて正常に動作しているように見えますが、繰り返し警告が表示されます。

警告:requests.packages.urllib3.connectionpool:接続プールがいっぱいです。接続を破棄しています:date.jsontest.com

Session()検索すると、ここrequestsなどでを作成するときに、プールがいっぱいになる問題を回避する方法が示されます。ただし、いくつかのことがあります。

  1. 警告を回避するための措置を講じなくても、一貫して期待どおりの結果が得られるようです。回避策を使用した場合、 の数を超えるリクエストに対してpool_maxsize警告が表示されます。
  2. リンクされた回避策でも、リクエスト数がプール サイズを超えた場合に警告が表示されます。プールのサイズを一度に超えないようにするために、何らかの調整があると思いました
  3. 警告を無効にする方法が見つからないようです。requests.packages.urllib3.disable_warnings()何もしないようです。

だから私の質問は:

  1. この警告は実際には何を意味するのでしょうか? 私の解釈では、単にリクエストの発火を落としているだけですが、そうではないようです。
  2. この警告はgrequests、特にプール サイズを制限するための措置を講じた場合に、実際にライブラリに関連していますか? テストで予期しない動作を引き起こしたり、期待した結果を誤ったりしていませんか?
  3. 無効にする方法はありますか?

テストするコード:

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

python - AWS Lambda で Grequest を使用するにはどうすればよいですか?

、、などのバイナリ依存関係を持つ複数のライブラリを使用するLambda関数があります。過去に、 でそれらを正常にコンパイルして にデプロイしました。PythonnumpyscipyPillowAmazon LinuxLambda

ただし、最近、依存関係の山に追加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.gzlibmy のフォルダー内のファイルですlambda.zip。このフォルダには、、、 などを組み立てながら AWS Linux で構築したファイル.soがいくつか含まれています。.anumpyscipyPillow

私の知る限り、これはnumpy. 私が理解していない部分は次のとおりです。私の関数が使用されていますnumpy(おそらくlibptf77blas.a.gzgrequests.

したがって、コンパイルに関する何かが他の依存ライブラリgeventの依存関係を壊したか、それ自体が必要であり、それが見つけたものに混乱していると思います。binarygeventlibptf77blas.a.gz

私はファイルに依存して実行しましたが、参照されていませlddん。しかし、私はコンパイルの初心者なので、それはほとんど決定的ではありません..sogeventlibptf77blas.a.gz

並列アップロードを有効にしたいのGrequestsですが、これを修正する方法、または使用する代替ライブラリが不明です (通常は JS を作成するため、Python は第 2 言語です)。

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

python - Python の要求の問題

Python の grequests ライブラリを使用して、同時に複数の URL を呼び出そうとしています。問題は、私が grequests の論理をよく理解していないことです。以下は私のコードのサンプル(編集版)です: -

MyrespArrayは、URL から返された個々の配列を返します。その配列を実行すると、それぞれが同時にではなく、独自のループで実行されているように見えます。より高速な結果を得るために、同時に実行する方法がわかりません。