python - Grequests with exponential backoff -


the following pattern have doing simultaneous requests:

rs = (grequests.get(url) url in urls) res_items = grequests.map(rs) num, res in enumerate(res_items):     json_data = json.loads(res.text) 

however, crashes error connectionerror: httpconnectionpool(host='apicache.vudu.com', port=80): max retries exceeded url: every 5,000 requests. more reliable patter doing above -- example, retrying url 5 times if individual request doesn't work?

here 1 option, using exponential backoff described here:

def grequester(self, url, n=1):     '''     google exponential backoff: https://developers.google.com/drive/web/handle-errors?hl=pt-pt     '''     max_tries = 8     try:         res = grequests.get(url)     except:         if n > max_tries:             return none         n += 1         log.warning('try #%s %s...' % (n, url))         time.sleep((2 ** n) + (random.randint(0, 1000) / 1000.0))  # add jitter 0-1000ms         return self.grequester(url, n)     else:         return res 

Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -