def process_job(self, job): """ Method used to launch a job in a separate process """ self.log_info('Found one %s job. Launching processing...' % job.status) process_number = self.process_number_list.pop(0) proc = None def check_job_success(): try: self.current_job_processes.remove(proc) self.process_number_list.append(process_number) except: pass job.reload() self.log_debug("Job %s success callback : %s" % (job.uuid, job.status)) if job.status not in ['success', 'error']: job.status = "success" job.status_text = "Job Successful" job.completion = 100 job.save() #job.save_as_successful() def check_job_error(exitcode): try: self.current_job_processes.remove(proc) self.process_number_list.append(process_number) except: pass job.reload() self.log_error("Job %s ERROR callback" % (job.uuid)) if job.status != 'error': job.details = "Error (callback) : exitcode=%s" % str(exitcode) job.status = "error" job.status_text = "Error - exitcode=%s" % str(exitcode) job.save() # Detach non-serializable thread/lock arguments status_update_stopper = self.status_update_stopper self.status_update_stopper = None # Start process proc = Process(name="Process-%02d-%s" % (process_number, job.uuid), target=launch_job, args=(job, process_number, self)) proc.start() # Reattach non-serializable thread/lock arguments self.status_update_stopper = status_update_stopper proc.job = job proc.process_number = process_number proc.callback_success = check_job_success proc.callback_error = check_job_error self.current_job_processes.append(proc) return
def process_job(self, job): """ Method used to launch a job in a separate process """ self.log_info('Found one %s job. Launching processing...' % job.status) process_number = self.process_number_list.pop(0) proc = None def check_job_success(): try: self.current_job_processes.remove(proc) self.process_number_list.append(process_number) except: pass job.reload() self.log_debug("Job %s success callback : %s" % (job.uuid, job.status)) if job.status not in ['success', 'error']: job.status = "success" job.status_text = "Job Successful" job.completion = 100 job.save() #job.save_as_successful() def check_job_error(exitcode): try: self.current_job_processes.remove(proc) self.process_number_list.append(process_number) except: pass job.reload() self.log_error("Job %s ERROR callback" % (job.uuid)) if job.status != 'error': job.details = "Error (callback) : exitcode=%s" % str(exitcode) job.status = "error" job.status_text = "Error - exitcode=%s" % str(exitcode) job.save() # Detach non-serializable thread/lock arguments status_update_stopper = self.status_update_stopper self.status_update_stopper = None # Start process proc = Process( name="Process-%02d-%s" % (process_number, job.uuid), target=launch_job, args=(job, process_number, self) ) proc.start() # Reattach non-serializable thread/lock arguments self.status_update_stopper = status_update_stopper proc.job = job proc.process_number = process_number proc.callback_success = check_job_success proc.callback_error = check_job_error self.current_job_processes.append(proc) return