問題タブ [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-requests - grequestsを使用してリクエストのプールを送信しますが、個々のリクエストの応答時間を取得するにはどうすればよいですか?
grequests pythonライブラリを使用して、サーバーに非同期でGETリクエストを送信しています。
送信されるリクエストのプール内の個々のリクエストごとにサーバーの応答時間を取得する方法がわかりませんか?
要求と応答のペアの開始時刻を取得するには、次のようにします。
しかし、応答が受信された時刻をどのように取得できますか?
python - grequests はどのように非同期ですか?
私はしばらくの間 Python リクエスト ライブラリを使用してきましたが、最近非同期でリクエストを作成する必要がありました。つまり、HTTP リクエストを送信し、メイン スレッドを引き続き実行し、リクエストが返ってきます。
当然、grequests ライブラリ ( https://github.com/kennethreitz/grequests ) に誘導されましたが、動作に戸惑っています。例えば:
上記のコードは、次の出力を生成します。
grequests.map() 呼び出しは、HTTP 応答が利用可能になるまで明らかにブロックされます。ここで「非同期」の動作を誤解しているようです。grequests ライブラリは、複数の HTTP リクエストを同時に実行し、すべてのレスポンスを単一のコールバックに送信するためのものです。これは正確ですか?
python - Grequestsをインストールします(geventでスタック)mac OS 10.8
Mac 10.8 に grequests をインストールするために最後の数時間試してみました。
私が得たときpip install
:
gevent
使用すると同じエラーが発生するため、これはインストールの問題のようです。
そこで、 geventを手動でインストールする方法を調べました。そして、前提条件としてgreenletを参照してください。
そして、私はpip install
それを取得します:
しかし、私はGCCを持っています:
多分私はGCCで何かを台無しにしました..
また:
それで、それは私がどこまで行ったのかです。何か案は?
アップデート:
単に tarball をコンパイルするだけで GCC エラーを回避しましたpython setup.py build install
。gevent
Cython がインストールされていますが、ビルドされた tarballをインストールしようとするとエラーが発生します。
python - Python Grequests + マルチプロセッシング
マルチプロセッシング ライブラリのプール内から grequests を使用して非同期 http 呼び出しを実行しようとしています。Grequest とマルチプロセッシングが相互に互換性がない可能性があることを示唆する問題が発生しています。具体的には、monkey.patch_all()
プールの作成で混乱を引き起こします。
monkey.patch_all()
最初は、私のコードを呼び出さずに:
次の 2 つのエラーが表示されます。
と
を呼び出すmonkey.patch_all()
と上記のエラーは修正されますが、コードが次の場所でハングします。
呼び出さないとmonkey.patch_all()
、プールが正常に作成されます。呼び出すmonkey.patch_all(thread=False, socket=False)
と、プールも正常に作成されますが、最初の 2 つのエラーは解決しません。
python - 複数のrequest.sessionを持つgrequestsプール?
REST Web サービスに対して多くの URL リクエストを作成したいと考えています。通常は 75 ~ 90k です。ただし、Web サービスへの同時接続数を調整する必要があります。
私は次の方法で grequest をいじり始めましたが、すぐに開いたソケットを噛み始めました。
これが 1 分ほど実行されると、「ソケットの最大数に達しました」というエラーが発生します。私が知る限り、grequests の requests.get 呼び出しのそれぞれが独自のセッションを使用します。つまり、リクエストごとに新しいソケットが開かれます。
単一のセッションを使用して grequests を作成する方法について言及しているgithubに関するメモを見つけました。しかし、これは事実上、すべてのリクエストを単一の共有プールにボトルネックにしているようです。これは、非同期の http リクエストの目的を無効にしているようです。
多くのセッションを作成する方法で grequests または gevent.Pool を使用することは可能ですか?
別の言い方をすれば、キューイングまたは接続プーリングのいずれかを使用して、多くの同時 HTTP リクエストを作成するにはどうすればよいですか?