Esempio n. 1
0
    def run_task(self, task):
        """Actually run a task, inserting a DB row and generating the celery task."""
        job = tables.BadpennyJob(task_id=task.task_id, created_at=time.now())
        current_app.db.session('relengapi').add(job)
        current_app.db.session('relengapi').commit()

        execution.submit_job(task_name=task.name, job_id=job.id)
Esempio n. 2
0
def create_job(app):
    with app.app_context():
        session = app.db.session('relengapi')
        task = tables.BadpennyTask(id=10, name='test.task')
        session.add(task)
        job = tables.BadpennyJob(task_id=10, created_at=dt(2014, 9, 16))
        session.add(job)
        session.commit()
        return job.id
Esempio n. 3
0
def run_task_now(task_name):
    """Force the given badpenny task to run now."""
    t = tables.BadpennyTask.query.filter(
        tables.BadpennyTask.name == task_name).first()
    if not t:
        raise NotFound

    session = current_app.db.session('relengapi')
    job = tables.BadpennyJob(task=t, created_at=time.now())
    session.add(job)
    session.commit()

    execution.submit_job(task_name=t.name, job_id=job.id)
    return job.to_jsonjob()
Esempio n. 4
0
def test_cron_task():
    """The cron_task decorator takes a cron spec argument and creates a task"""
    with empty_registry():
        @badpenny.cron_task('13 * * * *')
        def run_me(js):
            pass
        t = badpenny.Task.get('{}.run_me'.format(__name__))
        eq_(t.schedule, 'cron: 13 * * * *')

        when = datetime.datetime(2014, 8, 12, 15, 59, 17)
        bpt = tables.BadpennyTask(jobs=[
            tables.BadpennyJob(created_at=when),
        ])
        assert not t.runnable_now(
            bpt, datetime.datetime(2014, 8, 12, 15, 59, 17))
        assert t.runnable_now(bpt, datetime.datetime(2014, 8, 12, 16, 13, 0))
Esempio n. 5
0
def test_periodic_task():
    """The periodic_task decorator takes a `seconds` argument and creates a task"""
    with empty_registry():
        @badpenny.periodic_task(seconds=10)
        def run_me(js):
            pass
        t = badpenny.Task.get('{}.run_me'.format(__name__))
        eq_(t.schedule, 'every 10 seconds')

        when = datetime.datetime(2014, 8, 12, 15, 59, 17)

        bpt = tables.BadpennyTask(jobs=[
            tables.BadpennyJob(created_at=when),
        ])
        assert not t.runnable_now(bpt, when)
        assert not t.runnable_now(bpt, when + delta(5))
        assert t.runnable_now(bpt, when + delta(10))
Esempio n. 6
0
 def newjob(id, created_at, log=None):
     job = tables.BadpennyJob(id=id, task=task, created_at=created_at)
     session.add(job)
     if log:
         session.add(tables.BadpennyJobLog(id=id, content=log))
Esempio n. 7
0
def insert_job(app, task_id, created_at, **kwargs):
    session = app.db.session('relengapi')
    j = tables.BadpennyJob(task_id=task_id, created_at=created_at, **kwargs)
    session.add(j)
    session.commit()
    return j