Развернуть приложение Flask в Windows Azure и получить ошибку wfastcgi

Я пытался развернуть веб-сайт в Azure с помощью служб приложений. Я использовал файл require.txt для установки flask и wfastcgi и других необходимых зависимостей, также я использую Python 3.6. Я настроил файл web.config для правильного запуска python и использования пакета wfastcgi. Когда я пытаюсь перейти на сайт, я получаю ошибку wfastcgi, как это.

Error occurred while reading WSGI handler:

Traceback (most recent call last):
File "D:\Python34\Scripts\wfastcgi.py", line 711, in main
env, handler = read_wsgi_handler(response.physical_path)
File "D:\Python34\Scripts\wfastcgi.py", line 568, in read_wsgi_handler
return env, get_wsgi_handler(handler_name)
File "D:\Python34\Scripts\wfastcgi.py", line 551, in get_wsgi_handler
raise ValueError('"%s" could not be imported' % handler_name)
ValueError: "D:\home\site\wwwroot\FlaskTest.app" could not be imported

Мои файлы хранятся в папке "D:\home\site\wwwroot".

D:\home\site\wwwroot |FlaskTest.py |web.config |requirements.txt

My FlaskTest.py - это просто приложение для быстрого запуска Flask.

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
 return "Hello from FastCGI via IIS!"

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

И вот мой Web.config:

<configuration>
<system.webServer>
<handlers>
   <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
    scriptProcessor="D:\Python34\python.exe|D:\Python34\scripts\wfastcgi.py"
    resourceType="Unspecified" requireAccess="Script"/>
</handlers>
<httpErrors errorMode="Detailed" />
</system.webServer>
<appSettings>
 <add key="PYTHONPATH" value="D:\home\site\wwwroot" />
 <add key="WSGI_HANDLER" value="D:\home\site\wwwroot\FlaskTest.app" />
 <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
</appSettings>
</configuration>

Я действительно не уверен, что не так с ключом WSGI_HANDLER. Из всего, что я прочитал, это должно работать. Я попытался добавить init.py в каталог, и я все еще получаю сообщение об ошибке. По какой-то причине я могу понять, что у Wfastcgi возникают проблемы с импортом объекта "app", так как у меня есть объект Flask, названный так. Любой свет, который можно пролить на это, будет очень признателен, так как я уже несколько дней бьюсь о него.

1 ответ

Решение

Скопировано из комментария.

Microsoft устарела в Python для службы приложений Azure в Windows (вместе с базовыми компонентами, такими как wfastcgi),

https://docs.microsoft.com/en-us/visualstudio/python/publishing-python-web-applications-to-azure-from-visual-studio?view=vs-2017

Таким образом, сегодня единственно возможный способ размещения приложений Python - это использование службы приложений в Linux.

Я знаю, что это очень давно, но мне удалось заставить это работать в моем приложении django с дерьмовой работой. Если вы буквально войдете в файл wfastcgi, вы можете добавить туда переменные среды, и ваше приложение будет работать. Не уверен, насколько это плохо (помимо очевидных проблем с обслуживанием), но у меня он отлично работал на Windows Server 2016, iis 10 и python 3.7.

Хорошо - обновление этого... Если вы используете модуль FASTCGI в IIS. Вы можете добавить переменные среды в настройки для этого конкретного обработчика сценариев, и он без проблем извлечет их.

Другие вопросы по тегам