我在通过IIS将Flask Web服务托管到Windows Server上时遇到了一些麻烦。我已按照此处的教程进行操作:
并使用此处的资源来更好地理解wfastcgi模块: https://pypi.python.org/pypi/wfastcgi
虽然我已经按照教程中的说明使教程瓶应用程序工作,但当我尝试托管我自己的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模块,但是将模块的位置添加到我的Path系统变量通常可以解决问题。
我已经验证所有对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>
我觉得问题是以下几点之一:
在尝试通过apache部署服务之外,我不确定如何继续。不过,我更喜欢这种方法,因为我觉得我非常接近解决这个问题。
由于
答案 0 :(得分:0)
通过大卫对我帖子的评论,我能够对我的网络服务进行必要的更改,并通过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" />