Flask, wfastcgi и IIS в Windows Server 2012

Я пытаюсь развернуть службу фляги на IIS в Windows Server 2012. Чтобы прийти к этому моменту:

  1. pip колба (Python версий 2.7 и 3 уже были установлены.)
  2. Пип установленный wfastcgi
  3. Побежал wfastcgi-включить
  4. Создан новый сайт под IIS
  5. Добавлен обработчик для wfastcgi
  6. Модифицированный Web.config

Запуск с localhost возвращает ожидаемый результат. Тем не менее, когда я захожу на сайт с sitename, возвращается следующая ошибка (пути не указаны):

Error occurred while reading WSGI handler:

Traceback (most recent call last):
  File "wfastcgi.py", line 791, in main
    env, handler = read_wsgi_handler(response.physical_path)
  File "wfastcgi.py", line 633, in read_wsgi_handler
    handler = get_wsgi_handler(os.getenv("WSGI_HANDLER"))
  File "wfastcgi.py", line 586, in get_wsgi_handler
    raise Exception('WSGI_HANDLER env var must be set')
Exception: WSGI_HANDLER env var must be set

Это относится как к серверу, так и к другому компьютеру в домене. Кажется, что когда приложение запрашивается из чего-либо, кроме localhost, среда недоступна. Ничего не записывается в журнал wfastcgi.

Я включил app.py а также Web.config ниже. Я опустил scriptProcessor путь здесь, но он установлен на значение, возвращаемое из wfastcgi-enable.

При запуске с локального хоста среда доступна. Как сделать среду доступной для приложения при вызове за пределами locahost?

app.py

from flask import Flask  
myapp = Flask(__name__)

@myapp.route("/hello") 
def hello():
  return "Hello from flask!"

if __name__ == "__main__":        
  myapp.run(port=8080)

Web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <add key="WSGI_HANDLER" value="app.myapp" />
        <add key="PYTHONPATH" value="c:/inetpub/wwwroot/flask-services/" />
        <add key="WSGI_LOG" value="C:/TMP/logs/app.log" />
    </appSettings>
    <system.webServer>
        <handlers>
            <add name="python-wfastcgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="[Omitted]" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>

3 ответа

Недавно у нас была похожая проблема с IIS 7, Flask 0.12 и Python 3.6.4. Ваш web.config выглядит хорошо. Две рекомендации:

  1. Использовать virtualenv для вашего скриптового процессора
  2. Дважды проверьте в IIS, что IIS_IUSRS и IUSR имеют разрешения на изменение папок в вашем пути Python.

вы также можете добавить переменную окружения в настройки wfastcgi, как показано ниже:

PYTHONPATH:(путь python в виртуальной среде)

WSGI_HANDLER:(вашеприложение.приложение)

У меня была такая же ошибка, добавленная в web.config

      <appSettings>
        <!-- Required Settings -->
        <add key="WSGI_HANDLER" value="uploader.wsgi.application" />
        <add key="WSGI_LOG" value="C:\call-uploader-backend\Logs\my_app.log" />

        <add key="PYTHONPATH" value="C:\call-uploader-backend\uploader\" />

        <!-- Optional settings -->
        <add key="DJANGO_SETTINGS_MODULE" value="uploader.settings" />

    </appSettings>
Другие вопросы по тегам