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)
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'
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)
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)
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
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
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
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
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
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
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)
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)
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'
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)
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