Во вводном курсе по web-разработке я уже приводил этот пример:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
Этот код уже является настоящим Web-приложением. Но вы можете заметить отсутствие точки входа. Всё верно, Web-приложения в Python-мире не запускаются как обычные программы. За это отвечает WSGI-сервер.
В "боевых условиях" в этом качестве будет, как правило, выступать gunicorn, и позднее мы рассмотрим, как осуществлять такой запуск. Пока же удобнее использовать специальный сервер, поставляющийся вместе с библиотекой Flask. Этот встроенный во flask сервер не годится для серьёзного использования, но зато обладает качествами, полезными именно в процессе разработки. Он позволяет просматривать логи запросов и удобно отображает ошибки, возникающие во время исполнения.
Итак, запускаем приложение встроенным сервером. Для начала сохраним упомянутый выше код в файл hello_world.py
. Затем произведём в терминале следующие действия:
export FLASK_APP=hello_world.py
python -m flask run
Первая команда задаёт модуль, в котором объявлен объект WSGI-приложения. Вторая запускает сервер разработчика (developing server).
Подразумевается, что в текущем окружении установлен пакет
flask
(pip install flask
). Лучше всего, конечно же, устанавливать Flask в виртуальное окружение, пусть даже наш проект пока и состоит из одного модуля.
Если flask установлен нормально, и в модуле ошибок нет, то после ввода второй команды вы должны увидеть примерно такой текст:
* Serving Flask app "hello_world.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Обратите внимание, Flask сам предупреждает, что в данный момент запущен сервер разработчика, а в реальных условиях вам понадобится "промышленный" WSGI-сервер ("production WSGI server").
До тех пор, пока вы не остановите сервер нажатием Ctrl+C
, по адресу http://127.0.0.1:5000/
вы сможете видеть тот самый текст "Hello, World!".
Пока сервер разработчика только запускает приложение. А если в приложении случится ошибка, то вы увидите всего лишь заготовленное сообщение с текстом вроде "что-то пошло не так". Но во время разработки хочется и ошибки видеть в удобоваримом виде и, что немаловажно, иметь возможность не перезапускать руками сервер при каждом изменении кода! И dev server Flask это умеет: нужно всего лишь включить соответствующий режим:
export FLASK_ENV=development
Теперь выводимый при запуске (нужно будет заново запустить сервер) текст будет немного отличаться:
* Serving Flask app "hello_world.py" (lazy loading)
* Environment: development
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: xxx-xxx-xxx
Теперь предупреждение не выводится, окружение Environment называется "development", вместо "production", а также включен режим отладки ("Debugger is active!"). Про встроенный во Flask отладчик Werkzeug (читается "Веркцойг") я расскажу более подробно позднее. Пока же достаточно будет отметить, что с включенным отладчиком сообщения об ошибках будут отображаться прямо в браузере в удобном для просмотра виде!
flask
hello_world.py
с содержимым из примера в начале урокаFLASK_APP
и FLASK_ENV
TypeError
(и она же должна быть видна в терминале, в котором запущен сервер)Вам ответят команда поддержки Хекслета или другие студенты.
Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
Статья «Ловушки обучения»
Вебинар «Как самостоятельно учиться»
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт