Python Microsoft Azure 上的 FastCGI 错误

Python FastCGI error on Microsoft Azure

正在尝试在 Azure 云上部署 Python 应用程序。使用 python3.5.2x64 从 Cookiecutter template 创建 WebApp。使用模板中的预配置 web.config 我遇到了 500 错误:
<handler> scriptProcessor could not be found in <fastCGI> application configuration.

我的web.config文件:

<configuration>
 <system.web>
    <customErrors mode="Off"/>
 </system.web>
 <appSettings>
  <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
  <add key="WSGI_HANDLER" value="webapp.wsgi_app"/>
  <add key="WSGI_LOG" value="D:\home\LogFiles\python.log"/>
 </appSettings>
 <system.webServer>
  <httpErrors errorMode="Detailed" />
  <modules runAllManagedModulesForAllRequests="true" />
  <handlers>
   <add name="Python FastCGI"
       path="*"
       verb="*"
       modules="FastCgiModule"        
       scriptProcessor="D:\home\Python35\python.exe|D:\home\Python35\wfastcgi.py"
       resourceType="Unspecified"
       requireAccess="Script" />
  </handlers>
 </system.webServer>
</configuration>

我的webapp.py:

def wsgi_app(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    response_body = 'Hello World'
    yield response_body.encode()
if __name__ == '__main__':
    from wsgiref.simple_server import make_server
    httpd = make_server('localhost', 5555, wsgi_app)
    httpd.serve_forever()

使用 Azure 中的 Django 应用程序没有帮助,因为它已经过时(使用不受支持的 Microsoft.Diagnostics,引发 AttributeError: 'module' object has no attribute 'get_virtualenv_handler')。

对我做错了什么有什么建议吗?谢谢。

更新。 花了一些时间后,我发现所有这些都适用于本机安装的 Python(2 或 3,无关紧要),因此 IIS 似乎看不到或 smth 我的 Python 扩展(从 Azure 门户安装)。尽管如此,即使使用原生 Python 它也不会立即起作用,但首先会抛出 TypeError: source code string cannot contain null bytes (Python 3.4) 或 AttributeError: 'module' object has no attribute 'wsgi_app' (Python 2.7)。大约 15 分钟后,它 神奇地 开始工作。我所做的只是更改 Hello World! string.

不,解决方案很合乎逻辑,但并不明显(我认为)。我刚刚将处理程序添加到 Azure 门户上的 Web 应用程序设置(Web 应用程序 -> 应用程序设置 -> 处理程序映射)并且一切都非常有效!