コード例 #1
0
ファイル: molnsconfig.py プロジェクト: StochSS/stochss
    def runProcess(self, funcName, args = ()):
        if 'process' in self.session:
            process = MolnsConfigProcessWrapper.get_by_id(self.session['process'][0])

            if process is not None and process.is_alive():
                raise { status : False, msg : 'Currently running process, cannot start new one' }

        outPath = tempfile.mkdtemp(dir = os.path.abspath('{0}/../output/'.format(os.path.dirname(__file__))))

        stdout = os.path.join(outPath, 'stdout.log')
        stderr = os.path.join(outPath, 'stderr.log')
        return_code = os.path.join(outPath, 'return_code')

        molnsConfigProcessWrapper = MolnsConfigProcessWrapper()
        molnsConfigProcessWrapper.outPath = outPath
        molnsConfigProcessWrapper.stdout = stdout
        molnsConfigProcessWrapper.stderr = stderr
        molnsConfigProcessWrapper.return_code = return_code

        stdoutFile = open(stdout, 'w')
        stderrFile = open(stderr, 'w')

        thisFile = os.path.abspath(__file__)

        process = subprocess.Popen(shlex.split('python {0}'.format(thisFile)), stdout = stdoutFile, stderr = stderrFile, stdin = subprocess.PIPE)
        process.stdin.write(pickle.dumps((funcName, return_code, args)))
        process.stdin.close()

        molnsConfigProcessWrapper.pid = process.pid
        molnsConfigProcessWrapper.put()

        self.session['process'] = (molnsConfigProcessWrapper.key().id(), funcName)
コード例 #2
0
ファイル: molnsconfig.py プロジェクト: jesusrv1103/stochss
    def runProcess(self, funcName, args=()):
        if 'process' in self.session:
            process = MolnsConfigProcessWrapper.get_by_id(
                self.session['process'][0])

            if process is not None and process.is_alive():
                raise {
                    status: False,
                    msg: 'Currently running process, cannot start new one'
                }

        outPath = tempfile.mkdtemp(dir=os.path.abspath('{0}/../output/'.format(
            os.path.dirname(__file__))))

        stdout = os.path.join(outPath, 'stdout.log')
        stderr = os.path.join(outPath, 'stderr.log')
        return_code = os.path.join(outPath, 'return_code')

        molnsConfigProcessWrapper = MolnsConfigProcessWrapper()
        molnsConfigProcessWrapper.outPath = outPath
        molnsConfigProcessWrapper.stdout = stdout
        molnsConfigProcessWrapper.stderr = stderr
        molnsConfigProcessWrapper.return_code = return_code

        stdoutFile = open(stdout, 'w')
        stderrFile = open(stderr, 'w')

        thisFile = os.path.abspath(__file__)

        process = subprocess.Popen(shlex.split('python {0}'.format(thisFile)),
                                   stdout=stdoutFile,
                                   stderr=stderrFile,
                                   stdin=subprocess.PIPE)
        process.stdin.write(pickle.dumps((funcName, return_code, args)))
        process.stdin.close()

        molnsConfigProcessWrapper.pid = process.pid
        molnsConfigProcessWrapper.put()

        self.session['process'] = (molnsConfigProcessWrapper.key().id(),
                                   funcName)