0

问题

我有一个用 python 编写的简单烧瓶应用程序,我想在 Windows Server 2019 机器上使用 IIS 来托管它。

该应用程序已经使用 Flask 附带的开发服务器在本地运行。此外,完全相同的代码在我的 windows-server 2016 机器以及我的 Windows7 工作站上都​​能完美运行。

令人沮丧的是,当我尝试在我的 Windows server 2019 机器上的 IIS 下运行它时,它会出现错误 500 -“FastCGI 意外退出”。我尝试了各种各样的事情,但一无所获。我希望有人能帮忙!

设计

该应用程序是此 Microsoft 网页中描述的 wfastcgi 方法的实现: https ://docs.microsoft.com/en-us/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2019

python脚本是

app_hello.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return ' Hello, world!!!'

if __name__ == "__main__":
    app.run()

web.config 文件是

网络配置

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\devel\a_anomaly_detection\.venv\scripts\python.exe|c:\devel\a_anomaly_detection\.venv\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI,WebSocket" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:00" statusCodes="500" />
                </add>
            </traceFailedRequests>
        </tracing>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="app_hello.app" />
<add key="PYTHONPATH" value="c:\devel\a_anomaly_detection\website" />
<add key="WSGI_LOG" value="c:\devel\a_anomaly_detection\data\logs\wfastcgi.log" />
</appSettings>
</configuration>

我的软件版本是

  • 窗口服务器 2019

  • IIS 10

  • 蟒蛇 3.7.6rc1

  • wfastcgi 3.0.0

  • 烧瓶 1.1.2

错误 500 页

[error_500_screen][1]

跟踪失败请求

我启用了 tracefailedRequests这就是报告的内容

  1. NOTIFY_MODULE_START ModuleName="FastCgiModule", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotification="false" 09:08:17.333

  2. FASTCGI_ASSIGN_PROCESS CommandLine="c:\devel\a_anomaly_detection.venv\scripts\python.exe c:\devel\a_anomaly_detection.venv\lib\site-packages\wfastcgi.py", IsNewProcess="true", ProcessId="3708", RequestNumber="1" 09:08:17.333

  3. FASTCGI_START 09:08:17.333

  4. FASTCGI_WAITING_FOR_RESPONSE 09:08:17.333

  5. FASTCGI_UNEXPECTED_EXIT 错误 09:08:17.349

  6. SET_RESPONSE_ERROR_DESCRIPTION 警告 ErrorDescription="c:\devel\a_anomaly_detection.venv\scripts\python.exe - FastCGI 进程意外退出" 09:08:17.349

  7. MODULE_SET_RESPONSE_ERROR_STATUS 警告 ModuleName="FastCgiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="无法再次设置信号量。(0x67)", ConfigExceptionInfo ="" 09:08:17.349

  8. NOTIFY_MODULE_END ModuleName="FastCgiModule", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotificationEvent="false", NotificationStatus="NOTIFICATION_FINISH_REQUEST" 09:08:17.349

4

1 回答 1

0

您很可能忘记在服务器上为您的虚拟环境安装 Python。查看c:\devel\a_anomaly_detection\.venv\pyvenv.cfg文件并检查文件夹中是否确实有 Python,指定为home参数。

要进行故障排除,请从c:\devel\a_anomaly_detection\website文件夹运行此命令: c:\devel\a_anomaly_detection\.venv\scripts\python.exe c:\devel\a_anomaly_detection\.venv\lib\site-packages\wfastcgi.py并检查其输出

于 2020-11-23T04:15:12.660 回答