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 应用程序 -> 应用程序设置 -> 处理程序映射)并且一切都非常有效!
正在尝试在 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 应用程序 -> 应用程序设置 -> 处理程序映射)并且一切都非常有效!