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

Flask предоставляет команду run для запуска приложения с сервером разработки. В режиме отладки этот сервер предоставляет интерактивный отладчик и будет перезагружаться при изменении кода.

Предупреждение

Не используйте сервер разработки при развертывании на производстве. Он предназначен только для локальной разработки. Он не предназначен для обеспечения особой эффективности, стабильности или безопасности.

Варианты развертывания см. в разделе Развертывание в производство.

Командная строка

Команда flask run CLI является рекомендуемым способом запуска сервера разработки. Используйте опцию --app для указания на ваше приложение, а опцию --debug для включения режима отладки.

$ flask --app hello run --debug

Это включает режим отладки, включая интерактивный отладчик и перезагрузчик, а затем запускает сервер на http://localhost:5000/. Используйте flask run --help для просмотра доступных опций и Интерфейс командной строки для получения подробных инструкций по настройке и использованию CLI.

Адрес уже используется

Если другая программа уже использует порт 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 (Linux)

$ netstat -nlp | grep 5000
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 6847/python

lsof (macOS / Linux)

$ lsof -P -i :5000
Python 6847 IPv4 TCP localhost:5000 (LISTEN)

netstat (Windows)

> 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 для управления сервером. Основное отличие от команды CLI заключается в том, что сервер аварийно завершит работу, если при перезагрузке возникнут ошибки. debug=True может быть передан для включения режима отладки.

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

if __name__ == "__main__":
    app.run(debug=True)
$ python hello.py
Вернуться на верх