def create_schedules(events): schedules = [] for job in api.get_jobs(): cmd_sch = croniter(job.interval, job.last_time_run) # If we have missed more than one occurrence only run one time = cmd_sch.get_next(datetime) next_time = cmd_sch.get_next(datetime) if next_time <= datetime.now(): time = next_time next_time = cmd_sch.get_next(datetime) if (time - datetime.now()) < SCHEDULER_UPDATE_INTERVAL: job.last_time_run = time api.set_job_time(job) next_worker = api.get_next_worker() if next_worker is None: break schedule = api.Schedule(time, job, next_worker) schedules.append(schedule) api.add_schedules(sort_schedules(schedules)) delay = SCHEDULER_UPDATE_INTERVAL.total_seconds() events.enter(delay, 1, create_schedules, (events,))
def create_schedules(events): schedules = [] for job in api.get_jobs(): cmd_sch = croniter(job.interval, job.last_time_run) # If we have missed more than one occurrence only run one time = cmd_sch.get_next(datetime) next_time = cmd_sch.get_next(datetime) if next_time <= datetime.now(): time = next_time next_time = cmd_sch.get_next(datetime) if (time - datetime.now()) < SCHEDULER_UPDATE_INTERVAL: job.last_time_run = time api.set_job_time(job) next_worker = api.get_next_worker() if next_worker is None: break schedule = api.Schedule(time, job, next_worker) schedules.append(schedule) api.add_schedules(sort_schedules(schedules)) delay = SCHEDULER_UPDATE_INTERVAL.total_seconds() events.enter(delay, 1, create_schedules, (events, ))
def test_set_job_time_random_job_from_many(self): checkpoint1 = datetime.now() num_of_jobs = MANY # Create a crontab with many jobs test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) # Pop a random job in list to modify its time job = test_jobs.pop(random.randrange(len(test_jobs))) api.set_job_time(job) checkpoint2 = datetime.now() # Verify that the job's last time run was updated correctly self.assertTrue(job.last_time_run > checkpoint1 and job.last_time_run < checkpoint2)
def test_set_job_time_one_job(self): checkpoint1 = datetime.now() num_of_jobs = ONE # Create a crontab with one job test_jobs = create_test_tab(num_of_jobs, user1) api.set_jobs(test_jobs, user1) # Pop the only job in the list to modify its time job = test_jobs.pop() api.set_job_time(job) checkpoint2 = datetime.now() # Verify that the job's last time run was updated correctly self.assertTrue(job.last_time_run > checkpoint1 and job.last_time_run < checkpoint2)