def request(self, *args, **kwargs): # set default referer - without this ČSFD can return an infinite loop # of HTTP 302 redirects headers = kwargs.get('headers', {}) headers['Referer'] = self.default_referer kwargs['headers'] = headers try: self.wait() return super(CsfdSession, self).request(*args, **kwargs) except http.TooManyRedirects: log.debug('HTTP: Too many redirects. Retrying.') return self.request(*args, **kwargs) except http.HTTPError as e: if e.response.status_code in (502, 403): log.debug('HTTP: 502 or 403 status code. Retrying.') return self.request(*args, **kwargs) raise
def request(self, *args, **kwargs): try: return super(SynopsitvSession, self).request(*args, **kwargs) except http.SSLError: log.debug('HTTP: SSL error. Retrying.') return self.request(*args, **kwargs)
def wait(self): seconds = random.randrange(1, 5, 1) log.debug('HTTP: Waiting for %d seconds.', seconds) time.sleep(seconds)