Я не уверен, что это флажок, но когда я запускаю приложение в режиме dev (http://localhost:5000
), я не могу получить доступ к нему с других компьютеров в сети (с помощью http://[dev-host-ip]:5000
). Например, с Rails в режиме dev он работает нормально. Я не мог найти никаких документов относительно конфигурации сервера Flask dev. Любая идея, что должно быть настроено для этого?
Настроить сервер флагов, чтобы быть видимым по сети
Ответ 1
В то время как это возможно, вы не должны использовать сервер Flask dev в производстве. Сервер Flask dev не разработан, чтобы быть особенно безопасным, стабильным или эффективным. Для правильных решений см. Документы deploying.
Добавьте параметр app.run()
. По умолчанию он запускается на локальном хосте, меняет его на app.run(host= '0.0.0.0')
для запуска на вашем компьютере IP-адрес.
Документировано на сайте Flask в разделе "Внешне видимый сервер" на странице Быстрый старт:
Внешний видимый сервер
Если вы запустите сервер, вы заметите, что сервер только доступный с вашего собственного компьютера, а не с любого другого в сети. Это значение по умолчанию, поскольку в режиме отладки пользователь приложение может выполнять произвольный код Python на вашем компьютере. если ты отладить отключить или доверять пользователям в вашей сети, вы можете сделать сервер общедоступен.
Просто измените вызов метода
run()
, чтобы он выглядел следующим образом:
app.run(host='0.0.0.0')
Это означает, что ваша операционная система прослушивает общедоступный IP-адрес.
Ответ 2
Если вы используете исполняемую флэшку для запуска вашего сервера, вы можете использовать flask run --host=0.0.0.0
, чтобы изменить значение по умолчанию от 127.0.0.1 и открыть его для не локальных подключений. Способы config и app.run, которые описывают другие ответы, вероятно, являются лучшей практикой, но это также может быть удобно.
Внешний видимый сервер. Если вы запустите сервер, вы заметите, что сервер доступен только с вашего собственного компьютера, а не с любого другие в сети. Это значение по умолчанию, так как в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютер.
Если у вас отключен отладчик или доверяет пользователям вашей сети, вы можете сделать сервер общедоступным, просто добавив --host = 0.0.0.0 в командной строке:
flask run --host = 0.0.0.0 Это говорит, что ваша операционная система прослушивает все публичные IP-адреса.
Ответ 3
Если ваше приложение cool
имеет конфигурацию, загруженную из внешнего файла, как в следующем примере, не забудьте обновить соответствующий файл конфигурации с помощью HOST = "0.0.0.0"
cool.app.run(
host=cool.app.config.get("HOST", "localhost"),
port=cool.app.config.get("PORT", 9000)
)
Ответ 4
Добавьте ниже строки в свой проект
if __name__ == '__main__':
app.debug = True
app.run(host = '0.0.0.0',port=5005)
Ответ 5
Проверьте, открыт ли конкретный порт на сервере для обслуживания клиента или нет?
в дистрибутиве Ubuntu или Linux
sudo ufw enable
sudo ufw allow 5000/tcp //allow the server to handle the request on port 5000
Настроить приложение для обработки удаленных запросов
app.run(host='0.0.0.0' , port=5000)
python3 app.py & #run application in background
Ответ 6
Попробуйте, если метод 0.0.0.0 не работает
Скучный материал
Я лично много боролся за то, чтобы сделать мое приложение доступным для других устройств (ноутбуков и мобильных телефонов) через локальный сервер. Я попробовал метод 0.0.0.0, но не повезло. Затем я попытался изменить порт, но он просто не работал. Поэтому, попробовав несколько разных комбинаций, я пришел к этому, и это решило мою проблему развертывания моего приложения на локальном сервере.
шаги
- Получите локальный IPv4-адрес вашего компьютера.
Это можно сделать, набрав
ipconfig
в Windows иifconfig
в Linux и Mac.
Обратите внимание: вышеуказанный шаг должен выполняться на компьютере, на котором вы запускаете приложение, а не на компьютере, к которому вы обращаетесь к нему. Также обратите внимание, что адрес IPv4 может измениться, если вы отключитесь и подключитесь к сети.
Теперь просто запустите приложение фляги с полученным IPv4-адресом.
flask run -h 192.168.X.X
Например. В моем случае (см. изображение) я запустил его как:
flask run -h 192.168.1.100
На моем мобильном устройстве
Дополнительный материал
Если вы выполняете эту процедуру в Windows и используете Power Shell в качестве интерфейса командной строки и по-прежнему не можете получить доступ к веб-сайту, попробуйте команду CTRL + C в оболочке, в которой выполняется приложение. Power Shell иногда зависает, и для его восстановления требуется щепотка. Это может даже привести к остановке сервера, но иногда это помогает.
Это. Поднимите палец вверх, если вы нашли это полезным.
Еще несколько дополнительных вещей
Я создал короткий сценарий Powershell, который будет сообщать вам ваш IP-адрес всякий раз, когда он вам нужен:
$env:getIp = ipconfig
if ($env:getIp -match '(IPv4[\sa-zA-Z.]+:\s[0-9.]+)') {
if ($matches[1] -match '([^a-z\s][\d]+[.\d]+)'){
$ipv4 = $matches[1]
}
}
echo $ipv4
Сохраните его в файл с расширением .ps1 (для PowerShell) и запустите его перед запуском приложения. Вы можете сохранить его в папке проекта и запустить как:
.\getIP.ps1; flask run -h $ipv4
Примечание. Я сохранил приведенный выше код оболочки в getIP.ps1.
Cool.👌
Ответ 7
У меня была та же проблема, я использую PyCharm в качестве редактора, и когда я создал проект, PyCharm создал Flask Server. То, что я сделал, это создать сервер с Python следующим образом;
в основном то, что я сделал, это создать новый сервер, но фляж, если не python
Надеюсь, это поможет вам
Ответ 8
Этот ответ относится не только к флешке, но должен быть применим ко всем, кто не может подключиться к сервису с другой проблемы хоста.
- использовать
netstat -ano | grep <port>
netstat -ano | grep <port>
чтобы увидеть, является ли адрес 0.0.0.0 или ::. Если это 127.0.0.1, то это только для локальных запросов. - используйте tcpdump, чтобы увидеть, отсутствует ли какой-либо пакет. Если он показывает очевидный дисбаланс, проверьте правила маршрутизации с помощью iptables.
Сегодня я запускаю свое приложение фляги как обычно, но я заметил, что оно не может подключиться с другого сервера. Затем я запускаю netstat -ano | grep <port>
netstat -ano | grep <port>
, и локальный адрес: ::
или 0.0.0.0
(я пробовал оба, и я знаю, что 127.0.0.1 разрешает соединение только с локального хоста). Затем я использовал telnet host port
, в результате получается connect to...
Это очень странно. Тогда я подумал, что лучше проверить это с помощью tcpdump -i any port <port> -w w.pcap
. И я заметил, что все это так:
Затем, проверив iptables --list
OUTPUT, я увидел несколько правил:
эти правила запрещают выводить tcp жизненно важные пакеты при установлении связи. Удалив их, проблема исчезла.
Ответ 9
Если у вас возникли проблемы с доступом к серверу Flask, развернутому с помощью PyCharm, примите во внимание следующее:
PyCharm не запускает ваш основной файл .py напрямую, поэтому любой код в if __name__ == '__main__':
не будет выполнен, и любые изменения (например, app.run(host='0.0.0.0', port=5000)
) не вступят в силу.
Вместо этого вы должны сконфигурировать сервер Flask, используя Run Configurations, в частности, поместив --host 0.0.0.0 --port 5000
в поле дополнительных параметров.
Подробнее о настройке сервера Flask в PyCharm
Ответ 10
перейти к пути проекта, установленному FLASK_APP = ABC.py SET FLASK_ENV = разработка
При запуске колбы -h [yourIP] -p 8080 вы будете выполнять следующие действия в CMD: - * Обслуживание приложения Flask "expirement.py" (отложенная загрузка) * Среда: разработка * Режим отладки: включено * Перезапуск со статом * Отладчик активен! * PIN-код отладчика: 199-519-700 * Работает на http://[yourIP]: 8080/ (нажмите CTRL + C, чтобы выйти)
Ответ 11
Перейдите к пути вашего проекта в CMD (командная строка) и выполните следующую команду: -
set FLASK_APP = ABC.py
SET FLASK_ENV = разработка
колба работает -h [yourIP] -p 8080
Вы получите следующие o/p на CMD: -
- Приложение для сервировки Flask "expirement.py" (отложенная загрузка)
- Окружающая среда: развитие
- Режим отладки: вкл
- Перезапуск со статом
- Отладчик активен!
- PIN-код отладчика: 199-519-700
- Запуск по http://[yourIP]: 8080/ (нажмите CTRL + C, чтобы выйти)
Теперь вы можете получить доступ к своему приложению фляги на другом компьютере, используя http://[yourIP]: 8080/ url
Ответ 12
В дополнение к ответу @Shawn есть также встроенная переменная конфигурации SERVER_NAME. мы можем установить значение 0.0.0.0 в файле конфигурации, который вы указываете в app.config.from_pyfile ("config.py"). Также обратите внимание, что это переопределит имя хоста app.run.
Ссылка: http://flask.pocoo.org/docs/0.10/config/