Example #1
0
    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