IIS上的多个Python Flask站点

时间:2016-05-19 14:02:06

标签: python asp.net iis flask

我想运行三个单独的Python Flask URL,让我们称它们为test,staging和production。我想要一个IIS网站来提供这三种不同的应用程序。

所以我创建了一个网站,在这个网站下创建了三个IIS应用程序,并将这些文件夹的根文件夹分别设置为d:\ execution \ test,d:\ execution \ staging,d:\ execution \ prod。

在这些文件夹中,每个文件夹都是hello_world.py,看起来像这样

import datetime
from flask import Flask

app = Flask(__name__)

@app.route('/test')
def hello_world():
    return 'Hello World (Test)!' + datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")

if __name__ == '__main__':
    app.run(debug=True) 

显然,根据需要将路由更改为/ test,/ staging和/ prod 每个文件夹还包含一个类似于此

的web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <defaultDocument>
            <files>
                <add value="hello_world.py" />
            </files>
        </defaultDocument>
        <directoryBrowse enabled="true" />       
    </system.webServer>
    <system.web>
        <identity impersonate="false" />
    </system.web>
    <appSettings>
        <add key="PYTHONPATH" value="D:\Execution\Test" />
        <add key="WSGI_HANDLER" value="hello_world.app" />
    </appSettings>
</configuration>

再次根据需要更改PYTHONPATH

主网站root有一个web.config,里面写着

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="Python Flask" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python34\python.exe|C:\Python34\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
        </handlers>
    </system.webServer>
</configuration>

这是python处理程序。如果我把它拿出来,我可以从网站和三个应用程序子文件夹/ URL中提供基本的HTML页面。如果我把它重新放入,我什么都得不到,甚至只是一个基本的HTML页面。 IIS抛出一个泛型&#34;无法找到该网页。找不到HTTP 404&#34;当我尝试导航到任何东西时,无论是目录浏览,index.html还是我上面提到的python flask应用程序的http://server:port/test应用程序路径。

有没有人对我做错了什么有任何建议?

1 个答案:

答案 0 :(得分:0)

我认为问题的根源在于您的网站指定了基于#!/usr/bin/perl -w use strict; use warnings; use feature qw(switch say); my $LZE = shift(@ARGV); # die "Usage: $0 Partition\n" if @ARGV < 1; my $used_space = `df -h $LZE |awk 'FNR == 2 {print \$5}'`; given ($used_space) { chomp($used_space); when ($used_space lt '75%') { print "OK - $used_space of disk space used by $LZE\n"; exit(0); } when ($used_space eq '75%') { print "WARNING - $used_space of disk space used by $LZE\n"; exit(1); } when ($used_space gt '75%') { print "CRITICAL - $used_space of disk space used by $LZE\n"; exit(2); } default { print "UNKNOWN - $used_space of disk space used by $LZE\n"; exit(3); } } 的处理程序,该处理程序将覆盖您为每个应用程序提供的CGI值。

..你真的打算在cgi上运行wsgi吗? 如果你的答案是否定的,那肯定是你的问题。