def calculate_optimal_job_container_capacity(cooldown): seconds_since_last_job = get_seconds_since_last_job_run(cooldown) jobs_in_flight = (len(job_manager.get_jobs_by_status("IN_PROGRESS")) + len(job_manager.get_jobs_by_status("CREATED"))) msg = ("SITUATION:\nSecondsSinceLastJobRun: %s\nJobCount: %s") msg = msg % (seconds_since_last_job, jobs_in_flight) tasks_log.info(msg) if jobs_in_flight == 0: tasks_log.info("no jobs in flight") if seconds_since_last_job > cooldown: return 0 else: return 1 else: tasks_log.info("found jobs in flight") return 1
def update_jobs_created(): jobs_created = job_manager.get_jobs_by_status("CREATED") for job in jobs_created: tasks_log.info("Found new job") job.status_id = job_manager.get_job_status_id("IN_PROGRESS") db.commit() email_manager.send_job_created_email(job)
def update_jobs_in_progress(): jobs_in_progress = job_manager.get_jobs_by_status("IN_PROGRESS") for job in jobs_in_progress: job_items = job_manager.get_job_items(job.job_id) complete = True has_error = False for job_item in job_items: if job_item['job_item_status'] in ['ERROR','TIMEOUT']: has_error = True elif job_item['job_item_status'] in ['CREATED', 'IN_PROGRESS']: complete = False break if complete: if has_error: job.status_id = job_manager.get_job_status_id("COMPLETE_WITH_ERRORS") else: job.status_id = job_manager.get_job_status_id("COMPLETE") db.commit() email_manager.send_job_complete_email(job)
def update_jobs_in_progress(): jobs_in_progress = job_manager.get_jobs_by_status("IN_PROGRESS") for job in jobs_in_progress: job_items = job_manager.get_job_items(job.job_id) complete = True has_error = False for job_item in job_items: if job_item['job_item_status'] in ['ERROR', 'TIMEOUT']: has_error = True elif job_item['job_item_status'] in ['CREATED', 'IN_PROGRESS']: complete = False break if complete: if has_error: job.status_id = job_manager.get_job_status_id( "COMPLETE_WITH_ERRORS") else: job.status_id = job_manager.get_job_status_id("COMPLETE") db.commit() email_manager.send_job_complete_email(job)