【问题标题】:Flask, wfastcgi, and IIS on Windows Server 2012Windows Server 2012 上的 Flask、wfastcgi 和 IIS
【发布时间】:2018-09-01 14:55:02
【问题描述】:

我正在尝试在 Windows Server 2012 上的 IIS 上部署烧瓶服务。要达到这一点:

  1. pip installed flask(Python 版本 2.7 和 3 已安装。)
  2. pip 已安装 wfastcgi
  3. 运行 wfastcgi-enable
  4. 在 IIS 下建立了一个新站点
  5. 为 wfastcgi 添加了处理程序
  6. 修改了 Web.config

从 localhost 运行会返回我期望的输出。但是,当我从站点名称访问该网站时,返回以下错误(路径省略):

Error occurred while reading WSGI handler:

Traceback (most recent call last):
  File "wfastcgi.py", line 791, in main
    env, handler = read_wsgi_handler(response.physical_path)
  File "wfastcgi.py", line 633, in read_wsgi_handler
    handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
  File "wfastcgi.py", line 586, in get_wsgi_handler
    raise Exception('WSGI_HANDLER env var must be set')
Exception: WSGI_HANDLER env var must be set

无论是在服务器上还是从域上的另一台机器上都是这种情况。似乎当从 localhost 以外的任何地方请求应用程序时,环境都无法访问。没有任何内容写入 wfastcgi 日志。

我在下面添加了app.pyWeb.config。我在这里省略了scriptProcessor 路径,但它被设置为从 wfastcgi-enable 返回的值。

从 localhost 运行时,环境可用。 当在 locahost 之外调用时,如何使环境对应用可用?

app.py

from flask import Flask  
myapp = Flask(__name__)

@myapp.route("/hello") 
def hello():
  return "Hello from flask!"

if __name__ == "__main__":        
  myapp.run(port=8080)

Web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <add key="WSGI_HANDLER" value="app.myapp" />
        <add key="PYTHONPATH" value="c:/inetpub/wwwroot/flask-services/" />
        <add key="WSGI_LOG" value="C:/TMP/logs/app.log" />
    </appSettings>
    <system.webServer>
        <handlers>
            <add name="python-wfastcgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="[Omitted]" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>

【问题讨论】:

  • 我遇到同样的错误你找到答案了吗?

标签: python iis flask wfastcgi


【解决方案1】:

我在 web.config 中添加了同样的错误

<appSettings>
        <!-- Required Settings -->
        <add key="WSGI_HANDLER" value="uploader.wsgi.application" />
        <add key="WSGI_LOG" value="C:\call-uploader-backend\Logs\my_app.log" />

        <add key="PYTHONPATH" value="C:\call-uploader-backend\uploader\" />

        <!-- Optional settings -->
        <add key="DJANGO_SETTINGS_MODULE" value="uploader.settings" />

    </appSettings>

【讨论】:

    【解决方案2】:

    我们最近在 IIS 7、Flask 0.12 和 Python 3.6.4 上遇到了类似的问题。你的web.config 看起来不错。两条建议:

    1. 为您的脚本处理器使用virtualenv。它避免了使用系统级 Python 安装的副作用。这种方式更容易调试。
    2. 在 IIS 中再次检查 IIS_IUSRS 和 IUSR 是否具有修改 Python 路径中文件夹的权限。

    【讨论】:

    • 这是一个用户问题,而不是 IIS:我们需要一个域用户通过网络与数据库服务器通信。 :P
    • 我按照 Anjani 的要求进行了修改。
    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多