将 Flask 应用程序部署到 windows Azure 并收到 wfastcgi 错误
Deployed Flask app to windows Azure and receive wfastcgi error
我一直在尝试使用应用程序服务将网站部署到 Azure。我使用了 requirements.txt 文件来安装 flask 和 wfastcgi 以及其他需要的依赖项,我也在使用 Python 3.6。我已经设置 web.config 文件以正确启动 python 并使用 wfastcgi 包。当我尝试导航到该站点时,出现了这样的 wfastcgi 错误。
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "D:\Python34\Scripts\wfastcgi.py", line 711, in main
env, handler = read_wsgi_handler(response.physical_path)
File "D:\Python34\Scripts\wfastcgi.py", line 568, in read_wsgi_handler
return env, get_wsgi_handler(handler_name)
File "D:\Python34\Scripts\wfastcgi.py", line 551, in get_wsgi_handler
raise ValueError('"%s" could not be imported' % handler_name)
ValueError: "D:\home\site\wwwroot\FlaskTest.app" could not be imported
我的文件存储在 "D:\home\site\wwwroot"
它的结构是这样的
D:\home\site\wwwroot
|FlaskTest.py
|web.config
|requirements.txt
我的 FlaskTest.py 只是简单的快速入门 Flask 应用程序。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from FastCGI via IIS!"
if __name__ == '__main__':
app.run()
这是我的 Web.config:
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="D:\Python34\python.exe|D:\Python34\scripts\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<httpErrors errorMode="Detailed" />
</system.webServer>
<appSettings>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="WSGI_HANDLER" value="D:\home\site\wwwroot\FlaskTest.app" />
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
</appSettings>
</configuration>
我真的不确定 WSGI_HANDLER 键有什么问题。从我读过的所有内容来看,这应该可行。我尝试将 init.py 添加到目录中,但我仍然收到错误。出于某种原因,我可以理解 Wfastcgi 在导入 "app" 对象时遇到问题,因为我将 Flask 对象命名为该对象。如果我能对此有所了解,我将不胜感激,因为我几天来一直在抨击它。
从评论中复制。
Microsoft 在 Windows 上 Python 弃用了 Azure 应用服务(以及底层组件,例如 wfastcgi),
因此,如今托管 Python 应用程序的唯一可行方法是在 Linux.
上使用应用程序服务
我知道这太旧了,但我实际上能够通过糟糕的解决方法在我的 django 应用程序上运行它。如果你真的进入 wfastcgi 文件,你可以在那里添加环境变量,你的应用程序就会工作。不确定这有多糟糕(除了明显的维护问题)但它在 windows 服务器 2016、iis 10 和 python 3.7 上对我来说工作正常。
好的 - 对此的更新...
如果您在 IIS 上使用 FASTCGI 模块。您可以在该特定 scriptProcessor 的设置中添加环境变量,它可以毫无问题地提取它们。
我一直在尝试使用应用程序服务将网站部署到 Azure。我使用了 requirements.txt 文件来安装 flask 和 wfastcgi 以及其他需要的依赖项,我也在使用 Python 3.6。我已经设置 web.config 文件以正确启动 python 并使用 wfastcgi 包。当我尝试导航到该站点时,出现了这样的 wfastcgi 错误。
Error occurred while reading WSGI handler:
Traceback (most recent call last):
File "D:\Python34\Scripts\wfastcgi.py", line 711, in main
env, handler = read_wsgi_handler(response.physical_path)
File "D:\Python34\Scripts\wfastcgi.py", line 568, in read_wsgi_handler
return env, get_wsgi_handler(handler_name)
File "D:\Python34\Scripts\wfastcgi.py", line 551, in get_wsgi_handler
raise ValueError('"%s" could not be imported' % handler_name)
ValueError: "D:\home\site\wwwroot\FlaskTest.app" could not be imported
我的文件存储在 "D:\home\site\wwwroot" 它的结构是这样的
D:\home\site\wwwroot
|FlaskTest.py
|web.config
|requirements.txt
我的 FlaskTest.py 只是简单的快速入门 Flask 应用程序。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from FastCGI via IIS!"
if __name__ == '__main__':
app.run()
这是我的 Web.config:
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="D:\Python34\python.exe|D:\Python34\scripts\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<httpErrors errorMode="Detailed" />
</system.webServer>
<appSettings>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="WSGI_HANDLER" value="D:\home\site\wwwroot\FlaskTest.app" />
<add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
</appSettings>
</configuration>
我真的不确定 WSGI_HANDLER 键有什么问题。从我读过的所有内容来看,这应该可行。我尝试将 init.py 添加到目录中,但我仍然收到错误。出于某种原因,我可以理解 Wfastcgi 在导入 "app" 对象时遇到问题,因为我将 Flask 对象命名为该对象。如果我能对此有所了解,我将不胜感激,因为我几天来一直在抨击它。
从评论中复制。
Microsoft 在 Windows 上 Python 弃用了 Azure 应用服务(以及底层组件,例如 wfastcgi),
因此,如今托管 Python 应用程序的唯一可行方法是在 Linux.
上使用应用程序服务我知道这太旧了,但我实际上能够通过糟糕的解决方法在我的 django 应用程序上运行它。如果你真的进入 wfastcgi 文件,你可以在那里添加环境变量,你的应用程序就会工作。不确定这有多糟糕(除了明显的维护问题)但它在 windows 服务器 2016、iis 10 和 python 3.7 上对我来说工作正常。
好的 - 对此的更新... 如果您在 IIS 上使用 FASTCGI 模块。您可以在该特定 scriptProcessor 的设置中添加环境变量,它可以毫无问题地提取它们。