Esempio n. 1
0
    def _retry_or_fail(self, session):
        attempts = len(self.executions)
        if attempts < self.retry_limit:
            self.status = 'retrying'
            self.occurrence = self._calculate_retry()
            return

        self.status = 'failed'
        if self.parent_id:
            parent = RecurringTask.load(session, id=self.parent_id, lockmode='update')
            parent.reschedule(session)

        log('error', '%s marked as failed', repr(self))
Esempio n. 2
0
    def execute(self, session):
        parent = None
        if self.parent_id:
            parent = RecurringTask.load(session, id=self.parent_id, lockmode='update')

        execution = TaskExecution(task_id=self.id, attempt=len(self.executions) + 1)
        session.add(execution)

        execution.started = datetime.now(UTC)
        try:
            status, execution.result = self.action.execute(self, session)
        except Exception, exception:
            status = FAILED
            execution.result = format_exc()
Esempio n. 3
0
    def execute(self, session):
        parent = None
        if self.parent_id:
            parent = RecurringTask.load(session,
                                        id=self.parent_id,
                                        lockmode='update')

        execution = TaskExecution(task_id=self.id,
                                  attempt=len(self.executions) + 1)
        session.add(execution)

        execution.started = datetime.now(UTC)
        try:
            status, execution.result = self.action.execute(self, session)
        except Exception, exception:
            status = FAILED
            execution.result = format_exc()