在IIS中运行Python脚本

时间:2018-12-05 10:31:10

标签: python iis flask

我正在尝试在我的Flask Web应用程序中运行python脚本。基本上,用户可以单击一个按钮,该脚本应在托管我的flask python Web应用程序的服务器上运行。我将其托管在Windows Server 2016和IIS上(我知道,我应该考虑使用linux)

enter image description here

当用户单击按钮时,服务器将使用以下配置的os.system函数执行以下脚本。

def run_python_script(script_path_and_arguments):    
    try:
        command = 'python {}'.format(script_path_and_arguments)
        system(command)
        return True, 'Success'
    except Exception as e:
        logger.error('Failed to run script, exception: {}'.format(e))
        return False, 'Unknown Error'

enter image description here

当我在工作站上本地运行脚本时,它执行正常。 当我从服务器上从命令行运行脚本时,它运行正常, 当我尝试通过网站运行它时,单击该按钮将失败。

在我看来,它在IIS下运行时一定是一些漏洞/安全性问题。您是否知道我应该在哪里解决?

在服务器上,python.exe位于c:\ Anaconda3 \

编辑:我现在试图通过使用子进程模块运行脚本来捕获输出:它给出了一个明显的异常“命令'python ...'返回了非零退出状态1”

def run_python_script(tscript_path_and_arguments):
    try:
        command = 'python {}'.format(script_path_and_arguments) 
        output_bytes = subprocess.check_output(command, stderr=subprocess.STDOUT)
        output = output_bytes.decode('utf-8')
        lines = output.split('\n')
        for line in lines:
            logger.info(msg='Script output =  {}'.format(line))
        return True, 'Success'
    except Exception as e:
        logger.error('Failed to run script, exception: {}'.format(e))
        return False, 'Unknown Error'

1 个答案:

答案 0 :(得分:0)

事实证明,flask应用程序未使用pythonpath系统环境变量,而是使用在fastcgi设置中配置的变量: enter image description here