Колба при первом запуске: не используйте сервер разработки в производственной среде

Я установил флеш-плагин в PyCharm Community Edition, и у меня просто есть этот простой код в моем приложении фляги:

from flask import Flask
app = Flask(__name__)

app.route('/')
def index():
    return '<h1>Hello!</h1>'

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

И я получаю это сообщение:

WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead

* Restarting with stat
* Debugger is active!
* Debugger PIN: 123-456-789
* Running on http://127.0.0.1:5000/

Когда я захожу на http://127.0.0.1:5000, он говорит: "Запрошенный URL-адрес не найден на сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку".


Предыдущая версия сообщения гласила: "Не используйте сервер разработки в производственной среде".

Ответы

Ответ 1

Если вы не сообщите серверу разработки, что он работает в режиме разработки, он будет предполагать, что вы используете его в работе, и предупредит вас об этом. Сервер разработки не предназначен для использования в производстве. Он не предназначен для того, чтобы быть особенно эффективным, стабильным или безопасным.

Включите режим разработки, задав для переменной среды FLASK_ENV значение development.

export FLASK_ENV=development
flask run

Если вы работаете в PyCharm (или, возможно, в любой другой IDE), вы можете установить переменные среды в конфигурации запуска.

Режим разработки включает отладчик и перегрузчик по умолчанию. Если вам это не нужно, передайте --no-debugger или --no-reloader в команду run.

Ответ 2

В зависимости от того, что вы хотите сделать. Если вы действительно хотите сделать это в производстве, вы должны проверить это:

http://flask.pocoo.org/docs/dev/tutorial/deploy/

При публичном запуске, а не в разработке, вы не должны использовать встроенный сервер разработки (флеш-запуск). Сервер разработки предоставляется Werkzeug для удобства, но не предназначен для того, чтобы быть особенно эффективным, стабильным или безопасным.

Вместо этого используйте производственный сервер WSGI. Например, чтобы использовать Waitress, сначала установите его в виртуальной среде:

В вашем случае вы можете попробовать что-то вроде этого:

from waitress import serve

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return '<h1>Hello!</h1>'


serve(app, host='0.0.0.0', port=8080)