Exemple #1
0
    def update(self, value, account=None, emit=True):
        if self.scope == 'account':
            if account is None:
                raise ValueError('Account option requires the "account" parameter')

            if not self._validate_account(account):
                raise ValueError('Invalid value for "account" parameter: %r' % account)

        if self.scope == 'server' and account is not None:
            raise ValueError("Server option can't be called with the \"account\" parameter")

        # Get/Create `SchedulerTask`
        task, _ = SchedulerTask.get_or_create(
            key=self.key
        )

        # Get/Create `SchedulerJob`
        job, _ = SchedulerJob.get_or_create(
            account=account or 0,
            task=self.key
        )

        # Update job
        self.update_trigger(job, value)

        # Emit database change to handler (if enabled)
        if emit:
            self._preferences.on_database_changed(self.key, value, account=account)
Exemple #2
0
    def get(self, account=None):
        # Verify get() call is valid
        if self.scope == 'account':
            if account is None:
                raise ValueError('Account option requires the "account" parameter')

            if not self._validate_account(account):
                raise ValueError('Invalid value for "account" parameter: %r' % account)

        if self.scope == 'server' and account is not None:
            raise ValueError("Server option can't be called with the \"account\" parameter")

        # Get/Create `SchedulerTask`
        task, _ = SchedulerTask.get_or_create(
            key=self.key
        )

        # Get/Create `SchedulerJob`
        job, _ = SchedulerJob.get_or_create(
            account=account or 0,
            task=self.key,

            defaults={
                'trigger': self.default
            }
        )

        if job.trigger and job.due_at is None:
            job.due_at = self.get_next(job)
            job.save()

        return self._clone(task, job)
Exemple #3
0
    def process(self):
        # Retrieve due jobs
        now = datetime.utcnow()

        jobs = list(SchedulerJob.select().where(SchedulerJob.due_at <= now))

        if len(jobs) < 1:
            return

        log.debug("Processing %s job(s)", len(jobs))

        for job in jobs:
            # Process job
            update = self.process_job(job)

            # Update job status
            self.finish(job, update)

        log.debug("Complete")
    def process(self):
        # Retrieve due jobs
        now = datetime.utcnow()

        jobs = list(SchedulerJob.select().where(
            SchedulerJob.due_at <= now
        ))

        if len(jobs) < 1:
            return

        log.debug('Processing %s job(s)', len(jobs))

        for job in jobs:
            # Process job
            update = self.process_job(job)

            # Update job status
            self.finish(job, update)

        log.debug('Complete')