def test_get_quarterly_date_3rd_quarter_returns_30_september(self): july_1st = datetime(2015, 7, 1) august_6th = datetime(2015, 8, 6) september_30th = datetime(2015, 9, 30) assert get_quarterly_date(july_1st) == datetime(2015, 9, 30) assert get_quarterly_date(august_6th) == datetime(2015, 9, 30) assert get_quarterly_date(september_30th) == datetime(2015, 9, 30)
def test_get_quarterly_date_4th_quarter_returns_31_december(self): october_1st = datetime(2015, 10, 1) november_24th = datetime(2015, 11,24) december_31st = datetime(2015, 12, 31) assert get_quarterly_date(october_1st) == datetime(2015, 12, 31) assert get_quarterly_date(november_24th) == datetime(2015, 12, 31) assert get_quarterly_date(december_31st) == datetime(2015, 12, 31)
def test_get_quarterly_date_1st_quarter_returns_31_march(self): january_1st = datetime(2015, 1, 1) february_2nd = datetime(2015, 2, 2) march_31st = datetime(2015, 3, 31) assert get_quarterly_date(january_1st) == datetime(2015, 3, 31) assert get_quarterly_date(february_2nd) == datetime(2015, 3, 31) assert get_quarterly_date(march_31st) == datetime(2015, 3, 31)
def test_get_quarterly_date_2nd_quarter_returns_30_june(self): april_1st = datetime(2015, 4, 1) may_5th = datetime(2015, 5, 5) june_30th = datetime(2015, 4, 10) assert get_quarterly_date(april_1st) == datetime(2015, 6, 30) assert get_quarterly_date(may_5th) == datetime(2015, 6, 30) assert get_quarterly_date(june_30th) == datetime(2015, 6, 30)
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 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_get_quarterly_date_returns_same_time_as_passed(self): now = datetime.utcnow() returned_date = get_quarterly_date(now) assert now.time() == returned_date.time()
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)