2016-10-12 35 views
2

我使用grequests進行了大約10,000次調用,但其中一些調用返回爲503。如果我不一次排列所有10,000個呼叫,則此問題消失。把它分成1000個小組似乎是個訣竅。然而,我想知道是否有辦法趕上這503錯誤,只是重試request如何捕捉503錯誤並重試請求

這是我如何我打電話,並結合線程:

import grequests 
rs = (grequests.get(u, headers=header) for u in urls) 
response = grequests.map(rs) 

我知道這是真的很模糊,但我甚至不知道這是否使用grequests是可能的。

我naivley試圖

import grequests 
rs = (grequests.get(u, headers=header) for u in urls) 
time.sleep(1) 
response = grequests.map(rs) 

但是這並沒有慢下來。

回答

2

也許你可以嘗試使用事件鉤子捕獲錯誤並重新啓動請求http://docs.python-requests.org/en/master/user/advanced/#event-hooks

import grequests 

def response_handler(response): 
    if response.status_code == '503': 
     print('error.503') 

rs = (grequests.get(u, headers=header, hooks = dict('response' : response_handler)) for u in urls) 
response = grequests.map(rs)`