コード例 #1
0
ファイル: core.py プロジェクト: TMoneyZ/pybossa
def setup_scheduled_jobs(app):  # pragma: no cover
    """Setup scheduled jobs."""
    from datetime import datetime
    from pybossa.jobs import enqueue_periodic_jobs, schedule_job, \
        get_quarterly_date
    from rq_scheduler import Scheduler
    redis_conn = sentinel.master
    scheduler = Scheduler(queue_name='scheduled_jobs', connection=redis_conn)
    MINUTE = 60
    HOUR = 60 * 60
    MONTH = 30 * (24 * HOUR)
    first_quaterly_execution = get_quarterly_date(datetime.utcnow())
    JOBS = [dict(name=enqueue_periodic_jobs, args=['super'], kwargs={},
                 interval=(10 * MINUTE), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['high'], kwargs={},
                 interval=HOUR, timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['medium'], kwargs={},
                 interval=(12 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['low'], kwargs={},
                 interval=(24 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['monthly'], kwargs={},
                 interval=(1 * MONTH), timeout=(30 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['quaterly'], kwargs={},
                 interval=(3 * MONTH), timeout=(30 * MINUTE),
                 scheduled_time=first_quaterly_execution)]

    for job in JOBS:
        schedule_job(job, scheduler)
コード例 #2
0
    def test_returns_log_messages(self):
        success_message = schedule_job(a_job, self.scheduler)
        s_m = 'Scheduled a_function([], {}) to run every 1 seconds'
        assert success_message == s_m, (success_message, s_m)

        failure_message = schedule_job(a_job, self.scheduler)
        assert failure_message == 'WARNING: Job a_function([], {}) is already scheduled'
コード例 #3
0
ファイル: core.py プロジェクト: dchhabda/pybossa-gigwork
def setup_scheduled_jobs(app):  # pragma: no cover
    """Setup scheduled jobs."""
    from datetime import datetime
    from pybossa.jobs import enqueue_periodic_jobs, schedule_job, \
        get_quarterly_date
    from rq_scheduler import Scheduler
    redis_conn = sentinel.master
    scheduler = Scheduler(queue_name='scheduled_jobs', connection=redis_conn)
    MINUTE = 60
    HOUR = 60 * 60
    MONTH = 30 * (24 * HOUR)
    first_quaterly_execution = get_quarterly_date(datetime.utcnow())
    JOBS = [dict(name=enqueue_periodic_jobs, args=['super'], kwargs={},
                 interval=(10 * MINUTE), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['high'], kwargs={},
                 interval=(1 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['medium'], kwargs={},
                 interval=(12 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['low'], kwargs={},
                 interval=(24 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['monthly'], kwargs={},
                 interval=(1 * MONTH), timeout=(30 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['quaterly'], kwargs={},
                 interval=(3 * MONTH), timeout=(30 * MINUTE),
                 scheduled_time=first_quaterly_execution)]

    for job in JOBS:
        schedule_job(job, scheduler)
コード例 #4
0
def setup_scheduled_jobs(app):  # pragma: no cover
    """Setup scheduled jobs."""
    app.logger.error("This isn't really an error, setup scheduled jobs was triggered!")
    from datetime import datetime
    from pybossa.jobs import enqueue_periodic_jobs, schedule_job, \
        get_quarterly_date
    from rq_scheduler import Scheduler
    redis_conn = sentinel.master
    scheduler = Scheduler(queue_name='scheduled_jobs', connection=redis_conn)
    MINUTE = 60
    HOUR = 60 * 60
    MONTH = 30 * (24 * HOUR)
    first_quaterly_execution = get_quarterly_date(datetime.utcnow())
    JOBS = [dict(name=enqueue_periodic_jobs, args=['email'], kwargs={},
                 interval=(1 * MINUTE), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['maintenance'], kwargs={},
                 interval=(1 * MINUTE), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['super'], kwargs={},
                 interval=(10 * MINUTE), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['high'], kwargs={},
                 interval=(1 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['medium'], kwargs={},
                 interval=(12 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['low'], kwargs={},
                 interval=(24 * HOUR), timeout=(10 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['monthly'], kwargs={},
                 interval=(1 * MONTH), timeout=(30 * MINUTE)),
            dict(name=enqueue_periodic_jobs, args=['quaterly'], kwargs={},
                 interval=(3 * MONTH), timeout=(30 * MINUTE),
                 scheduled_time=first_quaterly_execution)]
    app.logger.error("This isn't really an error, the length of JOBS is "+str(len(JOBS)))
    for job in JOBS:
        app.logger.error("This isn't really an error, this is just one job: "+str(job))
        schedule_job(job, scheduler, app)
コード例 #5
0
    def test_adds_scheduled_job_with_interval(self):
        a_job['interval'] = 7
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        assert len(sched_jobs) == 1, sched_jobs
        assert sched_jobs[0].meta['interval'] == 7, sched_jobs[0].meta
        a_job['interval'] = 1
コード例 #6
0
ファイル: test_schedule_jobs.py プロジェクト: PyBossa/pybossa
    def test_adds_scheduled_job_with_interval(self):
        a_job['interval'] = 7
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        assert len(sched_jobs) == 1, sched_jobs
        assert sched_jobs[0].meta['interval'] == 7 , sched_jobs[0].meta
        a_job['interval'] = 1
コード例 #7
0
    def test_adds_several_jobs_(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(another_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()
        job_func_names = [job.func_name for job in sched_jobs]
        module_name = 'test_jobs.test_schedule_jobs'

        assert len(sched_jobs) == 2, sched_jobs
        assert module_name + '.a_function' in job_func_names, job_func_names
        assert module_name + '.another_function' in job_func_names, job_func_names
コード例 #8
0
    def test_does_not_add_job_if_already_added(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        jobs = []
        for job in sched_jobs:
            jobs.append(job)

        assert len(jobs) == 1, sched_jobs
コード例 #9
0
ファイル: test_schedule_jobs.py プロジェクト: PyBossa/pybossa
    def test_adds_several_jobs_(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(another_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()
        job_func_names = [job.func_name for job in sched_jobs]
        module_name = 'test_jobs.test_schedule_jobs'

        assert len(sched_jobs) == 2, sched_jobs
        assert module_name + '.a_function' in job_func_names, job_func_names
        assert module_name + '.another_function' in job_func_names, job_func_names
コード例 #10
0
    def test_adds_scheduled_job_with_interval(self):
        a_job['interval'] = 7
        schedule_job(a_job, self.scheduler)
        sched_jobs = list(self.scheduler.get_jobs())

        t = len(sched_jobs)
        assert t == 1, sched_jobs
        job = sched_jobs[0]
        assert job.meta['interval'] == 7 , job.meta
        a_job['interval'] = 1
コード例 #11
0
    def test_adds_scheduled_job_with_interval(self):
        a_job['interval'] = 7
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        t = 0
        job = None
        for j in sched_jobs:
            job = j
            t += 1
        assert t == 1, sched_jobs
        assert job.meta['interval'] == 7, job.meta
        a_job['interval'] = 1
コード例 #12
0
ファイル: core.py プロジェクト: idahoan/pybossa
def setup_scheduled_jobs(app):  #pragma: no cover
    redis_conn = sentinel.master
    from pybossa.jobs import schedule_priority_jobs, schedule_job
    from rq_scheduler import Scheduler
    scheduler = Scheduler(queue_name='scheduled_jobs', connection=redis_conn)
    MINUTE = 60
    HOUR = 60 * 60
    MONTH = 30 * (24 * HOUR)
    JOBS = [
        dict(name=schedule_priority_jobs,
             args=['super', (10 * MINUTE)],
             kwargs={},
             interval=(10 * MINUTE),
             timeout=(10 * MINUTE)),
        dict(name=schedule_priority_jobs,
             args=['high', (1 * HOUR)],
             kwargs={},
             interval=HOUR,
             timeout=(10 * MINUTE)),
        dict(name=schedule_priority_jobs,
             args=['medium', (12 * HOUR)],
             kwargs={},
             interval=(12 * HOUR),
             timeout=(10 * MINUTE)),
        dict(name=schedule_priority_jobs,
             args=['low', (24 * HOUR)],
             kwargs={},
             interval=(24 * HOUR),
             timeout=(10 * MINUTE)),
        dict(name=schedule_priority_jobs,
             args=['monthly', (1 * MONTH)],
             kwargs={},
             interval=(1 * MONTH),
             timeout=(30 * MINUTE)),
        dict(name=schedule_priority_jobs,
             args=['quaterly', (3 * MONTH)],
             kwargs={},
             interval=(3 * MONTH),
             timeout=(30 * MINUTE))
    ]

    for job in JOBS:
        schedule_job(job, scheduler)
コード例 #13
0
ファイル: test_schedule_jobs.py プロジェクト: PyBossa/pybossa
    def test_failed_attempt_to_schedule_does_not_polute_redis(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(a_job, self.scheduler)
        stored_values = self.connection.keys('rq:job*')

        assert len(stored_values) == 1, len(stored_values)
コード例 #14
0
ファイル: test_schedule_jobs.py プロジェクト: PyBossa/pybossa
    def test_returns_log_messages(self):
        success_message = schedule_job(a_job, self.scheduler)
        failure_message = schedule_job(a_job, self.scheduler)

        assert success_message == 'Scheduled a_function([], {}) to run every 1 seconds'
        assert failure_message == 'WARNING: Job a_function([], {}) is already scheduled'
コード例 #15
0
ファイル: core.py プロジェクト: Informationsfabrik/pybossa
def setup_scheduled_jobs(app):  # pragma: no cover
    """Setup scheduled jobs."""
    from datetime import datetime
    from pybossa.jobs import enqueue_periodic_jobs, schedule_job, \
        get_quarterly_date
    from rq_scheduler import Scheduler
    redis_conn = sentinel.master

    while True:
        try:
            app.logger.info("Trying to ping redis server...")
            redis_conn.ping()
            app.logger.info("...Success")
            break
        except:
            app.logger.info("Could not ping redis server")
            time.sleep(1)

    scheduler = Scheduler(queue_name='scheduled_jobs', connection=redis_conn)
    MINUTE = 60
    HOUR = 60 * 60
    MONTH = 30 * (24 * HOUR)
    first_quaterly_execution = get_quarterly_date(datetime.utcnow())
    JOBS = [
        dict(name=enqueue_periodic_jobs,
             args=['email'],
             kwargs={},
             interval=(1 * MINUTE),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['maintenance'],
             kwargs={},
             interval=(1 * MINUTE),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['super'],
             kwargs={},
             interval=(10 * MINUTE),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['high'],
             kwargs={},
             interval=(1 * HOUR),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['medium'],
             kwargs={},
             interval=(12 * HOUR),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['low'],
             kwargs={},
             interval=(24 * HOUR),
             timeout=(10 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['monthly'],
             kwargs={},
             interval=(1 * MONTH),
             timeout=(30 * MINUTE)),
        dict(name=enqueue_periodic_jobs,
             args=['bimonthly'],
             kwargs={},
             interval=(2 * MONTH),
             timeout=(2 * HOUR)),
        dict(name=enqueue_periodic_jobs,
             args=['quaterly'],
             kwargs={},
             interval=(3 * MONTH),
             timeout=(30 * MINUTE),
             scheduled_time=first_quaterly_execution)
    ]

    for job in JOBS:
        msg = schedule_job(job, scheduler)
        app.logger.info(msg)
コード例 #16
0
    def test_does_not_add_job_if_already_added(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        assert len(sched_jobs) == 1, sched_jobs
コード例 #17
0
    def test_failed_attempt_to_schedule_does_not_polute_redis(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(a_job, self.scheduler)
        stored_values = self.connection.keys('rq:job*')

        assert len(stored_values) == 1, len(stored_values)
コード例 #18
0
ファイル: test_schedule_jobs.py プロジェクト: PyBossa/pybossa
    def test_does_not_add_job_if_already_added(self):
        schedule_job(a_job, self.scheduler)
        schedule_job(a_job, self.scheduler)
        sched_jobs = self.scheduler.get_jobs()

        assert len(sched_jobs) == 1, sched_jobs