Exemple #1
0
        internal async Task <PythonExecutionResult> ExecuteAsync(string methodName, params PythonArgument[] arguments)
        {
            var req = new PythonExecutionRequest(_scriptFilePath, methodName, arguments);
            var res = await _executor.ExecuteAsnc(req);

            res.ErrorMessage.Evaluate(
                whenSome: str =>
            {
                throw new PythonException(str);
            });

            return(res);
        }
Exemple #2
0
        public async Task <PythonExecutionResult> ExecuteAsnc(PythonExecutionRequest request)
        {
            var startInfo = _startInfoFactory.CreateForExecution(request);

            using (var process = Process.Start(startInfo))
            {
                var errorString = await process.StandardError.ReadToEndAsync();

                string resultString = null;

                using (var reader = process.StandardOutput)
                {
                    resultString = await reader.ReadToEndAsync();

                    process.WaitForExit();
                }

                var err = string.IsNullOrEmpty(errorString) ? Maybe.CreateNone <string>() : Maybe.CreateSome(errorString);
                var res = string.IsNullOrEmpty(resultString) ? Maybe.CreateNone <string>() : Maybe.CreateSome(resultString);
                return(new PythonExecutionResult(res, err));
            }
        }