在 IIS 上部署 Flask 应用程序时出错
Error when deploying Flask application on IIS
我在通过 IIS 将 Flask Web 服务托管到 Windows 服务器时遇到了一些问题。我已按照此处找到的教程进行操作:
并使用了此处的资源以更好地理解 wfastcgi 模块:
https://pypi.python.org/pypi/wfastcgi
虽然我已经让教程中的 Flask 应用程序按照教程中的概述工作,但当我尝试托管自己的 Flask 应用程序时,我遇到了一个奇怪的错误。我应该提到我的烧瓶应用程序通过 cmd 提示完美运行。
wfastcgi.py 模块运行时,似乎无法识别对 Handler 构造函数的调用。
这是我收到的错误:
Traceback (most recent call last):
File "C:\web_services\guest_reg_api\wfastcgi.py", line 847, in main
result = handler(record.params, response.start)
TypeError: 'module' object is not callable
过去,我遇到过这些错误,因为 Windows 找不到 Python 模块,但将模块的位置添加到我的路径系统变量通常可以解决问题。
我已验证对 Python、Flask 和 wfastcgi.py 的所有引用都在我的路径系统变量中
我可以在同一台服务器上通过 IIS 成功托管一个 http 站点。
这是我的 web.config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Flask" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\web_services\guest_reg_api\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
<add name="python-wfastcgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\Python27\Lib\site-packages\wfastcgi.pyc" resourceType="File" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="guestreg_api_v2.app" />
<add key="PYTHONPATH" value="C:\web_services\guest_reg_api" />
</appSettings>
</configuration>
我觉得这个问题是以下几件事之一:
- Python 模块在 Windows 中的可见性由于我设置系统变量的方式存在一些错误
- 我的 web.config 文件中有一个错误
- 我正在处理我们 IT 部门的 Windows 服务器设置。有人告诉我我有管理权限,但有时我被禁止做某些事情......可能是服务器上设置的权限干扰了 IIS 网络服务托管进程?
除了尝试通过 apache 部署服务之外,我不确定如何继续。不过,我更喜欢这种方法,因为我觉得我快要解决这个问题了。
谢谢
通过 davidism 对我的 post 的评论,我能够对我的 Web 服务进行必要的更改并通过 IIS 托管它。
问题是我一直在逐字逐句地学习链接教程,而没有理解配置文件中 WSGI_HANDLER 的值的含义。我需要调用我在 Python 脚本中创建的 Flask 实例:
摘自我的 Python 脚本:
from flask import *
...
guestreg_api = Flask(__name__)
对 web.config 文件所做的更改:
<add key="WSGI_HANDLER" value="guestreg_api_v2.guestreg_api" />
我在通过 IIS 将 Flask Web 服务托管到 Windows 服务器时遇到了一些问题。我已按照此处找到的教程进行操作:
并使用了此处的资源以更好地理解 wfastcgi 模块: https://pypi.python.org/pypi/wfastcgi
虽然我已经让教程中的 Flask 应用程序按照教程中的概述工作,但当我尝试托管自己的 Flask 应用程序时,我遇到了一个奇怪的错误。我应该提到我的烧瓶应用程序通过 cmd 提示完美运行。
wfastcgi.py 模块运行时,似乎无法识别对 Handler 构造函数的调用。 这是我收到的错误:
Traceback (most recent call last):
File "C:\web_services\guest_reg_api\wfastcgi.py", line 847, in main
result = handler(record.params, response.start)
TypeError: 'module' object is not callable
过去,我遇到过这些错误,因为 Windows 找不到 Python 模块,但将模块的位置添加到我的路径系统变量通常可以解决问题。
我已验证对 Python、Flask 和 wfastcgi.py 的所有引用都在我的路径系统变量中
我可以在同一台服务器上通过 IIS 成功托管一个 http 站点。
这是我的 web.config 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Flask" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\web_services\guest_reg_api\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
<add name="python-wfastcgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python27\python.exe|C:\Python27\Lib\site-packages\wfastcgi.pyc" resourceType="File" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="guestreg_api_v2.app" />
<add key="PYTHONPATH" value="C:\web_services\guest_reg_api" />
</appSettings>
</configuration>
我觉得这个问题是以下几件事之一:
- Python 模块在 Windows 中的可见性由于我设置系统变量的方式存在一些错误
- 我的 web.config 文件中有一个错误
- 我正在处理我们 IT 部门的 Windows 服务器设置。有人告诉我我有管理权限,但有时我被禁止做某些事情......可能是服务器上设置的权限干扰了 IIS 网络服务托管进程?
除了尝试通过 apache 部署服务之外,我不确定如何继续。不过,我更喜欢这种方法,因为我觉得我快要解决这个问题了。
谢谢
通过 davidism 对我的 post 的评论,我能够对我的 Web 服务进行必要的更改并通过 IIS 托管它。
问题是我一直在逐字逐句地学习链接教程,而没有理解配置文件中 WSGI_HANDLER 的值的含义。我需要调用我在 Python 脚本中创建的 Flask 实例:
摘自我的 Python 脚本:
from flask import *
...
guestreg_api = Flask(__name__)
对 web.config 文件所做的更改:
<add key="WSGI_HANDLER" value="guestreg_api_v2.guestreg_api" />