Pythonの普及しているRequestsライブラリは、ホームページ上でスレッドセーフであると言われていますが、詳細は記載されていません。私はrequests.session()
を呼び出すと、私はその後、無事にそのような複数のスレッドにこのオブジェクトを渡すことができます。PythonのRequestsライブラリスレッドのセッションオブジェクトは安全ですか?
session = requests.session()
for i in xrange(thread_count):
threading.Thread(
target=target,
args=(session,),
kwargs={}
)
、複数のスレッドで同じ接続プールを使用して要求をしますか?
もしそうなら、これは推奨された方法ですか、それとも各スレッドに独自の接続プールを与えるべきですか? (すべての個々の接続プールの合計サイズを、上記のような1つの大きな接続プールのサイズに合計したと仮定します)。各アプローチの長所と短所は何ですか?
どちらが良いかわかりましたか?私は現在、ほぼ同じ質問に走っています。私は1つの接続プール内のすべての要求にボトルネックがないように、各スレッドの新しいセッションを考えていました。 –
@Marcel Wilson正確ではありません。セッションオブジェクトを使って何度も同じURLを要求していた私のプロジェクトでは、すべてのスレッドに同じセッションオブジェクトを送りましたが、アプリケーションはうまくいくように見えますが、より良いアプローチが何であるかまだ分かりません。しかし、私の問題は接続プールのボトルネックではなく、あまりにも多くの接続を開いたり、一度に多くのリクエストを送信したりすることでした。 – dg123
リクエストはurllib3の上に構築されています。要求のスレッド安全性は、urllib3のスレッド安全性に大きく起因しています。これは、スレッドの安全性について詳しく説明しています。 – selllikesybok