ПРОБЛЕМА
У меня есть простое приложение-фляга, написанное на 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, и вот что было сообщено
NOTIFY_MODULE_START ModuleName = FastCgiModule, Notification = EXECUTE_REQUEST_HANDLER, fIsPostNotification = false 09: 08: 17.333
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
FASTCGI_START 09: 08: 17.333
FASTCGI_WAITING_FOR_RESPONSE 09: 08: 17.333
FASTCGI_UNEXPECTED_EXIT Ошибка 09:08: 17.349
SET_RESPONSE_ERROR_DESCRIPTION Предупреждение об ошибке Описание = c: \ devel \ a_anomaly_detection.venv \ scripts \ python.exe - Процесс FastCGI неожиданно завершился 09: 08: 17.349
MODULE_SET_RESPONSE_ERROR_STATUS Предупреждение ModuleName = FastCgiModule, Notification = EXECUTE_REQUEST_HANDLER, HttpStatus = 500, HttpReason = Внутренняя ошибка сервера, HttpSubStatus = 0, ErrorCode = Семафор не может быть установлен снова. (0x67), ConfigExceptionInfo = 09: 08: 17.349
NOTIFY_MODULE_END ModuleName = FastCgiModule, Notification = EXECUTE_REQUEST_HANDLER, fIsPostNotificationEvent = false, NotificationStatus = NOTIFICATION_FINISH_REQUEST 09: 08: 17.349
gunicorn
для запуска флэш-сервера, а затем размещаю этот с NGINX / IIS / ‹insert-web-server›. - person Maximilian Burszley   schedule 03.09.2020