Сервер разработки
Flask предоставляет команду run для запуска приложения с сервером разработки. В режиме отладки этот сервер предоставляет интерактивный отладчик и будет перезагружаться при изменении кода.
Предупреждение
Не используйте сервер разработки при развертывании в производство. Он предназначен только для использования во время разработки на локальной машине. Он не предназначен для высокой эффективности, стабильности или безопасности.
См. Развертывание в производство для вариантов развертывания.
Командная строка
Рекомендуемый способ запуска сервера разработки – команда flask run командной строки. Используйте опцию --app для указания приложения, и опцию --debug для включения режима отладки.
$ flask --app hello run --debug
Это включает режим отладки, включая интерактивный отладчик и перезагрузчик, а затем запускает сервер по адресу http://localhost:5000/. Используйте flask run --help для просмотра доступных опций и Интерфейс командной строки для получения подробных инструкций по настройке и использованию командной строки.
Адрес уже используется
Если другой процесс уже использует порт 5000, при запуске сервера будет отображено сообщение OSError. Оно может содержать одно из следующих сообщений:
OSError: [Errno 98] Address already in useOSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
Найдите и остановите другой процесс или используйте flask run --port 5001 для выбора другого порта.
Вы можете использовать netstat или lsof для определения идентификатора процесса, использующего порт, а затем использовать инструменты операционной системы для остановки этого процесса. Следующий пример показывает, что процесс с идентификатором 6847 использует порт 5000.
$ netstat -nlp | grep 5000 tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 6847/python
$ lsof -P -i :5000 Python 6847 IPv4 TCP localhost:5000 (LISTEN)
> netstat -ano | findstr 5000 TCP 127.0.0.1:5000 0.0.0.0:0 LISTENING 6847
macOS Monterey и более поздние версии автоматически запускают службу, использующую порт 5000. Чтобы отключить службу, перейдите в Системные настройки, Общие параметры и отключите «Приёмник AirPlay».
Отложенные ошибки при перезагрузке
При использовании команды flask run с перезагрузчиком сервер продолжит работу, даже если вы введёте синтаксические ошибки или другие ошибки инициализации в код. При доступе к сайту будет показан интерактивный отладчик для ошибки, а сервер не завершит работу.
Если синтаксическая ошибка уже присутствует при вызове flask run, она будет обработана немедленно, и будет показана отладочная информация, а не ожидание доступа к сайту. Это сделано для того, чтобы ошибки были видны изначально, всё ещё позволяя серверу обрабатывать ошибки при перезагрузке.
В коде
Сервер разработки также можно запустить из Python с помощью метода Flask.run(). Этот метод принимает аргументы, аналогичные опциям командной строки для управления сервером. Основное различие с командой командной строки заключается в том, что сервер завершится с ошибкой, если при перезагрузке возникнут ошибки. debug=True может быть передан для включения режима отладки.
Размещайте вызов внутри блока main, иначе он будет мешать при попытке импортировать и запустить приложение с сервером производства позже.
if __name__ == "__main__":
app.run(debug=True)
$ python hello.py
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.3.x/server/