Приложение Python Flask в IIS не работает в Windows Server 2019

ПРОБЛЕМА

У меня есть простое приложение-фляга, написанное на python, которое я хотел бы разместить с использованием IIS на машине Windows Server 2019.

Приложение уже работало локально с использованием сервера разработки, поставляемого с Flask. Кроме того, тот же самый код отлично работает на моем компьютере с оконным сервером 2016, а также на моей рабочей станции Windows7.

К сожалению, он показывает ошибку 500 - FastCGI неожиданно завершил работу, когда я попытался запустить его под IIS на моем компьютере с Windows server 2019. Я перепробовал все, но ничего не добился. Надеюсь, что кому-то поможет!

ДИЗАЙН

Приложение представляет собой реализацию подхода wfastcgi, описанного на этой веб-странице Microsoft: 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

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>

Мои версии программного обеспечения

  • Windows Server 2019

  • IIS 10

  • Python 3.7.6rc1

  • wfastcgi 3.0.0

  • Фляга 1.1.2

страница ошибки 500

[error_500_screen] [1]

tracefailedRequests

Я включил 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 Предупреждение об ошибке Описание = 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 = Внутренняя ошибка сервера, 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


person jedwards    schedule 03.09.2020    source источник
comment
Итак, Flask - это не фреймворк CGI, это фреймворк WSGI. По моему личному опыту, я использую пакет gunicorn для запуска флэш-сервера, а затем размещаю этот с NGINX / IIS / ‹insert-web-server›.   -  person Maximilian Burszley    schedule 03.09.2020


Ответы (1)


Скорее всего, вы забыли установить на сервере 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 и проверьте ее вывод

person Sergey Nudnov    schedule 23.11.2020