7

Настройка Flask-разработчика для доступности в сети

2

Я не совсем уверен, является ли это проблемой, специфичной для Flask, но когда я запускаю приложение в режиме разработки (http://localhost:5000), я не могу получить к нему доступ с других машин в сети (по адресу http://[dev-host-ip]:5000). Например, с Rails в режиме разработки всё работает нормально. Я не смог найти документацию по настройке сервера разработки Flask. Есть идеи, что нужно настроить, чтобы это заработало?

5 ответ(ов)

1

Если вы используете исполняемый файл flask для запуска вашего сервера, добавьте --host=0.0.0.0 к команде flask run, чтобы изменить настройку по умолчанию с 127.0.0.1 и открыть доступ для не локальных соединений.

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

Если вы отключили отладчик или доверяете пользователям в вашей сети, вы можете сделать сервер общедоступным, просто добавив --host=0.0.0.0 в командной строке:

$ flask run --host=0.0.0.0

Это указывает вашей операционной системе слушать на всех публичных IP-адресах.

Ссылка: https://flask.palletsprojects.com/quickstart/

0

Чтобы запустить ваше приложение Flask на всех доступных интерфейсах, добавьте host='0.0.0.0' в вызов app.run(). Это позволит вашему приложению принимать запросы не только с локального компьютера, но и с других устройств в сети.

Вот пример кода, как это должно выглядеть:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Если при запуске приложения вы получаете ошибку OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions, это может означать, что у вас нет разрешения на использование указанного порта, или другой процесс уже использует этот порт. Чтобы выяснить, чем занят порт 5000, вы можете воспользоваться командой:

netstat -na | findstr 5000

Эта команда покажет вам, если что-то другое использует 5000 порт, и вы сможете принять меры, такие как окончание процесса или выбор другого порта для вашего приложения.

0

Чтобы проверить, открыт ли определённый порт на сервере для обслуживания клиента в Ubuntu или другой дистрибуции Linux, вы можете выполнить следующие шаги:

  1. Включите UFW (Uncomplicated Firewall), если он ещё не включён:

    sudo ufw enable
    
  2. Разрешите доступ к нужному порту. Например, для порта 5000 используйте следующую команду:

    sudo ufw allow 5000/tcp
    

    Это позволит серверу обрабатывать запросы на порту 5000.

  3. Настройте ваше приложение для обработки удалённых запросов. Запустите его с помощью параметра host='0.0.0.0', чтобы ваше приложение слушало на всех интерфейсах:

    app.run(host='0.0.0.0', port=5000)
    
  4. Теперь запустите приложение в фоновом режиме:

    python3 app.py &
    

После выполнения этих шагов ваш сервер будет готов принимать входящие подключения на порту 5000. Вы можете использовать утилиты, такие как netstat или ss, чтобы проверить, что порт действительно открыт:

sudo netstat -tuln | grep 5000

или

sudo ss -tuln | grep 5000

Если вы видите строку с 0.0.0.0:5000, это означает, что порт открыт и ваше приложение работает.

0

Если ваше приложение cool загружает конфигурацию из внешнего файла, как показано в следующем примере, не забудьте обновить соответствующий конфигурационный файл, добавив строку HOST="0.0.0.0":

cool.app.run(
    host=cool.app.config.get("HOST", "localhost"),
    port=cool.app.config.get("PORT", 9000)
)            

Это важно для того, чтобы приложение слушало на всех интерфейсах и было доступно извне.

0

Чтобы создать файл .flaskenv в корневом каталоге вашего проекта, выполните следующие действия:

  1. Создайте файл с именем .flaskenv в корне вашего проекта.
  2. Вставьте в него следующие параметры:
FLASK_APP=app.py
FLASK_ENV=development
FLASK_RUN_HOST=[ip-адрес-разработчика]
FLASK_RUN_PORT=5000

Если у вас есть виртуальное окружение, активируйте его и выполните команду:

pip install python-dotenv

Этот пакет будет использовать файл .flaskenv, и переменные, объявленные в нем, будут автоматически импортированы в различных сеансах терминала.

После этого вы можете запустить приложение с помощью команды:

flask run

Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать!

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь