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)
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)