def retry(self, payload_class, args): """This method provides a way to retry a job after a failure. If the jobclass defined by the payload containes a ``retry_every`` attribute then pyres will attempt to retry the job until successful or until timeout defined by ``retry_timeout`` on the payload class. :param payload_class: the :class:`Job`-like class that needs to be retried :type payload_class: :class:`Job`-like :param args: The args to be passed to the `payload_class.perform` method when it is retried. :type args: list """ retry_every = getattr(payload_class, 'retry_every', None) retry_timeout = getattr(payload_class, 'retry_timeout', 0) if retry_every: now = ResQ._current_time() first_attempt = self._payload.get("first_attempt", now) retry_until = first_attempt + timedelta(seconds=retry_timeout) retry_at = now + timedelta(seconds=retry_every) if retry_at < retry_until: self.resq.enqueue_at(retry_at, payload_class, *args, **{'first_attempt':first_attempt}) return True return False
def retry(self, payload_class, args): retry_every = getattr(payload_class, 'retry_every', None) retry_timeout = getattr(payload_class, 'retry_timeout', 0) if retry_every: now = ResQ._current_time() first_attempt = self._payload.get("first_attempt", now) retry_until = first_attempt + timedelta(seconds=retry_timeout) retry_at = now + timedelta(seconds=retry_every) if retry_at < retry_until: self.resq.enqueue_at(retry_at, payload_class, *args, **{'first_attempt': first_attempt}) return True return False
def retry(self, payload_class, args): retry_every = getattr(payload_class, 'retry_every', None) retry_timeout = getattr(payload_class, 'retry_timeout', 0) if retry_every: now = ResQ._current_time() first_attempt = self._payload.get("first_attempt", now) retry_until = first_attempt + timedelta(seconds=retry_timeout) retry_at = now + timedelta(seconds=retry_every) if retry_at < retry_until: self.resq.enqueue_at(retry_at, payload_class, *args, **{'first_attempt':first_attempt}) return True return False
def retry(self, payload_class, args): """This method provides a way to retry a job after a failure. If the jobclass defined by the payload containes a ``retry_every`` attribute then pyres will attempt to retry the job until successful or until timeout defined by ``retry_timeout`` on the payload class. """ retry_every = getattr(payload_class, "retry_every", None) retry_timeout = getattr(payload_class, "retry_timeout", 0) if retry_every: now = ResQ._current_time() first_attempt = self._payload.get("first_attempt", now) retry_until = first_attempt + timedelta(seconds=retry_timeout) retry_at = now + timedelta(seconds=retry_every) if retry_at < retry_until: self.resq.enqueue_at(retry_at, payload_class, *args, **{"first_attempt": first_attempt}) return True return False
def retry(self, payload_class, args): """This method provides a way to retry a job after a failure. If the jobclass defined by the payload containes a ``retry_every`` attribute then pyres will attempt to retry the job until successful or until timeout defined by ``retry_timeout`` on the payload class. """ retry_every = getattr(payload_class, 'retry_every', None) retry_timeout = getattr(payload_class, 'retry_timeout', 0) if retry_every: now = ResQ._current_time() first_attempt = self._payload.get("first_attempt", now) retry_until = first_attempt + timedelta(seconds=retry_timeout) retry_at = now + timedelta(seconds=retry_every) if retry_at < retry_until: self.resq.enqueue_at(retry_at, payload_class, *args, **{'first_attempt': first_attempt}) return True return False
def perform(fail_until): if ResQ._current_time() < fail_until: raise Exception("Don't blame me! I'm supposed to fail!") else: return True