def retry(self, attemps=5, wait=1, msg="", msgfail="Max retries reached"): """ Retries and begin again from the beginning. :param attemps: number of maximum retries :param wait: time to wait in seconds before retry :param msg: message passed to fail if attemps value was reached """ frame = inspect.currentframe() try: id = frame.f_back.f_lineno finally: del frame #: Delete the frame or it wont be cleaned if id not in self.retries: self.retries[id] = 0 if 0 < attemps <= self.retries[id]: self.fail(msgfail) self.retries[id] += 1 self.wait(wait) raise Retry(msg)
def download(self, url, *args, **kwargs): try: return super().download(url, *args, **kwargs) except BadHeader as exc: if exc.code == 503: self.multi_dl = False raise Retry("503")
def restart(self, msg="", premium=True): if not msg: msg = (self._("Restart plugin") if premium else self._("Fallback to free processing")) if not premium: if self.premium: self.restart_free = True else: self.fail("{} | {}".format( msg, self._("Url was already processed as free"))) self.req.clear_cookies() raise Retry(msg)