python Windows Server 2012上的 flask 、wfastcgi和IIS

c9qzyr3d  于 2023-01-24  发布在  Python
关注(0)|答案(3)|浏览(231)

我正尝试在Windows Server 2012的IIS上部署flask服务。要达到此目的:

  1. pip安装了flask(Python 2.7和3版本已经安装好了。)
    1.管道安装wfastcgi
    1.已运行wfastcgi启用
    1.在IIS下建立新站点
    1.添加了wfastcgi的处理程序
    1.已修改Web. config
    从localhost运行返回了我期望的输出。但是,当我从sitename访问网站时,返回了以下错误(省略了路径):
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运行时,环境可用。在localhost之外调用时,如何使环境可用于应用?

    • 一米三米一x**
from flask import Flask  
myapp = Flask(__name__)

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

if __name__ == "__main__":        
  myapp.run(port=8080)
    • 一米四分一秒**
<?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>
3zwjbxry

3zwjbxry1#

我们最近在IIS 7、Flask 0.12和Python 3.6.4中遇到过类似的问题。您的web.config看起来不错。
1.使用virtualenv作为脚本处理器。它避免了使用系统级Python安装的副作用。这样更容易调试。
1.在IIS中仔细检查IIS_IUSRS和IUSR是否对Python路径中的文件夹具有修改权限。

tp5buhyn

tp5buhyn2#

我有同样的错误添加这些在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>
y1aodyip

y1aodyip3#

你也可以添加环境变量在这wfastcgi设置象下面:
PYTHONPATH:(虚拟环境中python的路径)
WSGI_处理程序:(您的应用程序)

相关问题