Example #1
0
    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)
Example #2
0
    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")
Example #3
0
    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)