2017-02-26 15 views
1

ホストへの複数の新しい永続接続を徐々に開く方法はありますか?以下のコードを使用して永続的な接続の数を変更できることは知っていますが、どのように接続を確立しますか?マルチスレッド要求Python

  • 新しい接続2/sの
  • は、私は30 /秒

を要求します:私は、次のレート制限をAPIからデータを取得しようとしている

s = requests.Session() 
adapter = requests.adapters.HTTPAdapter(pool_connections=5, pool_maxsize=28) 
s.mount('https//', adapter) 

マルチプロセッシング.pools.threadpoolsマルチ処理の代わりに、マルチプロセッシング。プールいくつかのWindowsの制約。

は、これは、関数です:

def My_Func(PARAMS): 
    ... 
    req = requests.Request('GET', url, headers = headers, params = params) 
    pre = req.prepare() 
    resp = s.send(pre, stream = True, verify = False) 

そして、これはコードです:

s = requests.Session() 

pool = ThreadPool(10) 
Data = pool.map(My_Func, PARAMS) 
pool.close() 
pool.join() 

s.close() 

しかし、起動され、各スレッドが新しい接続を確立する(私はので、それはだと思います他の接続はプールに戻されていません)。これは、ThreadPool(10)に対して、429(接続制限を超える)の応答を得ることを意味します。 docから

答えて

0

:接続は一度だけ、すべてのボディデータが読み込まれた再利用のためにプールに解放され

注意。 streamをFalseに設定するか、Responseオブジェクトのcontentプロパティを読み取るようにしてください。

stream=True接続を解放しない

関連する問題