Spec-Zone.ru › Flask

Сервер разработки

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 use
  • OSError: [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 Receiver» в настройках системы и отключив её.

Отложенные ошибки при перезагрузке

При использовании команды flask run с перезагрузчиком сервер продолжит работу, даже если вы введёте синтаксические ошибки или другие ошибки инициализации в код. При доступе к сайту будет показан интерактивный отладчик для ошибки, а не сбой сервера.

Если синтаксическая ошибка уже присутствует при вызове flask run, она произойдёт немедленно и покажет обратный след, а не будет ожидать доступа к сайту. Это сделано для того, чтобы ошибки были более заметны изначально, всё ещё позволяя серверу обрабатывать ошибки при перезагрузке.

В коде

Сервер разработки также можно запустить из Python с помощью метода Flask.run(). Этот метод принимает аргументы, похожие на параметры командной строки, для управления сервером. Основное отличие от команды CLI состоит в том, что сервер завершится аварийно, если при перезагрузке произойдут ошибки. debug=True можно передать для включения режима отладки.

Разместите вызов в блоке main, в противном случае он будет конфликтовать при попытке импортировать и запустить приложение с сервером продакшена позже.

if __name__ == "__main__":
    app.run(debug=True)
$ python hello.py

© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/stable/server/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API