托管Flask(Python)应用会引发CGI错误

时间:2019-01-10 02:14:48

标签: python azure flask azure-web-sites

我已经按照azure网站执行了所有步骤。我可以看到在Azure上运行的python 3.6版本。我已经安装了python 3.6扩展名并添加了正确的web.config文件。当我尝试打开我的URL时,出现以下错误

http://myuniqueappname114.azurewebsites.net/

enter image description here

任何想法如何解决此错误

1 个答案:

答案 0 :(得分:3)

通常,此问题是由于您的web.config文件配置不正确而导致无法从IIS启动Flask应用程序引起的。

这是我在Azure网站上部署Flask Hello World应用的情况,您可以参考该应用来检查您的部署是否正确。

  1. 我在python364x86下安装了Python扩展D:\home。也许您安装的是python364x64
  2. 我通过Kudo控制台在路径pip install flask中命令了D:\home\python364x86
  3. 通过命令wwwroot,我在tree /F /A下的文件结构如下图所示。 enter image description here
  4. __init__.py文件的内容类似于Flask官方Hello演示。

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello World!"
    
    if __name__ == "__main__":
        app.run()
    
  5. 我的web.config文件内容如下,请注意python364x86是我在此处的标签scriptProcessor的属性system.webServer > handles > add中使用的。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="PYTHONPATH" value="D:\home\site\wwwroot" />
        <add key="WSGI_HANDLER" value="myflask.app" />
      </appSettings>
      <system.webServer>
        <handlers>
            <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python364x86\python.exe|D:\home\python364x86\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
        </handlers>
      </system.webServer>
    </configuration>
    

然后演示应用程序运行。 enter image description here

如果您的案件与我的案件不同,请发布您的web.config文件内容和其他必要信息,以帮助解决您的问题。