2016-07-14 97 views
0

我有一段代碼會對網站做很多請求,因此我在某些間歇性故障的情況下實施了某種重試邏輯。我還需要使用不同的IP,所以我有這樣一段代碼:python請求:我可以連續使用s.mount()嗎?

import requests 
from requests_toolbelt.adapters.source import SourceAddressAdapter 

new_source = SourceAddressAdapter(ip) 
adapter = requests.adapters.HTTPAdapter(max_retries = 20) 

sess = requests.Session() 
sess.mount('http://', adapter) 
sess.mount('https://', adapter) 
sess.mount('http://', new_source) 
sess.mount('https://', new_source) 

我不知道它是否是正確的,或者不使用sess.mount()兩次,或者使用它的第二次會「覆蓋」我的第一個參數(適配器)。我需要在會話期間使用IP和重試適配器。

如果sess.mount()不起作用,我該怎麼辦?

回答

0

SourceAddressAdapterHTTPAdapter繼承,同時也代理kwargs到HTTPAdapter.__init__()

adapter = SourceAddressAdapter(ip, max_retries=20) 

附註:

class SourceAddressAdapter(HTTPAdapter): 
    def __init__(self, source_address, **kwargs): 
     ### Some code ### 
     super(SourceAddressAdapter, self).__init__(**kwargs) 

https://github.com/sigmavirus24/requests-toolbelt/blob/master/requests_toolbelt/adapters/source.py

所以你就可以用max_retries kwarg使用是的,我遲到了,不過有人可能會像我一樣谷歌這個問題。

相關問題