Хотя это возможно, вы не должны использовать сервер Flask для разработки. Сервер разработчика Flask не предназначен для обеспечения особой безопасности, стабильности или эффективности. См. Документы по развертыванию для правильных решений.
Добавьте параметр в свой app.run()
. По умолчанию он работает на локальном хосте, измените его app.run(host= '0.0.0.0')
на IP-адрес вашего компьютера.
Документировано на сайте Flask в разделе «Внешний видимый сервер» на странице быстрого запуска :
Внешне видимый сервер
Если вы запустите сервер, вы заметите, что сервер доступен только с вашего компьютера, а не с любого другого в сети. Это значение по умолчанию, поскольку в режиме отладки пользователь приложения может выполнить произвольный код Python на вашем компьютере. Если вы отключили отладку или доверяете пользователям вашей сети, вы можете сделать сервер общедоступным.
Просто измените вызов run()
метода, чтобы он выглядел так:
app.run(host='0.0.0.0')
Это говорит вашей операционной системе прослушивать публичный IP.
mymacname.local
.flask run --host 0.0.0.0
его, чтобы он работал.Если вы используете исполняемый файл фляги для запуска вашего сервера, вы можете
flask run --host=0.0.0.0
изменить значение по умолчанию с 127.0.0.1 и открыть его для нелокальных подключений. Методы config и app.run, описанные в других ответах, вероятно, лучше использовать, но это также может быть удобно.Ссылка: http://flask.pocoo.org/docs/0.11/quickstart/
источник
127.0.0.1
(я правильно настроил свой исполняемый файл Flask, или, как мне показалось, не был уверен, что я делал не так). Однако после добавления,app.run(host='0.0.0.0')
как отмечалось в другом ответе, в файл моего сервера, я смог получить доступ к странице через сети. У кого-нибудь еще есть проблема, подобная той, которую я описал, или есть какая-либо информация по ней?Попробуйте это, если метод 0.0.0.0 не работает
Скучный материал
Я лично много боролся за то, чтобы сделать мое приложение доступным для других устройств (ноутбуков и мобильных телефонов) через локальный сервер. Я попробовал метод 0.0.0.0, но не повезло. Затем я попытался изменить порт, но он просто не работал. Поэтому, попробовав несколько разных комбинаций, я пришел к этому, и это решило мою проблему развертывания моего приложения на локальном сервере.
меры
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-адрес, когда он вам понадобится:
Сохраните его в файл с расширением .ps1 (для PowerShell) и запустите его перед запуском приложения. Вы можете сохранить его в папке вашего проекта и запустить как:
Примечание: я сохранил приведенный выше код оболочки в getIP.ps1.
Cool.👌
источник
Если ваше
cool
приложение имеет свою конфигурацию, загруженную из внешнего файла, как в следующем примере, не забудьте обновить соответствующий файл конфигурации с HOST = "0.0.0.0"источник
Добавьте ниже строки в ваш проект
источник
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
netstat -na|findstr 5005
.Проверьте, открыт ли конкретный порт на сервере для обслуживания клиента или нет?
в дистрибутиве Ubuntu или Linux
Настройте приложение для обработки удаленных запросов
источник
Перейдите к пути вашего проекта в CMD (командная строка) и выполните следующую команду: -
set FLASK_APP = ABC.py
SET FLASK_ENV = разработка
колба запустить -h [yourIP] -p 8080
Вы получите следующие o / p на CMD: -
Теперь вы можете получить доступ к приложению фляги на другом компьютере, используя http: // [yourIP]: 8080 / url
источник
Если у вас возникают проблемы с доступом к вашему серверу 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
источник
Для меня я следовал вышеупомянутому ответу и изменил его немного:
Например:
источник
У меня была та же проблема, я использую PyCharm в качестве редактора, и когда я создавал проект, PyCharm создал Flask Server. Я создал сервер с Python следующим образом;
в основном то, что я сделал, было создать новый сервер, но колбу, если не Python
Я надеюсь, что это поможет вам
источник
Этот ответ относится не только к флешке, но должен быть применим ко всем, кто не может подключиться к сервису из другого хоста .
netstat -ano | grep <port>
чтобы увидеть, является ли адрес 0.0.0.0 или ::. Если это 127.0.0.1, то это только для локальных запросов.Сегодня я запускаю свое приложение фляги как обычно, но я заметил, что оно не может подключиться с другого сервера. Затем я запускаю
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 жизненно важные пакеты при установлении связи. Удалив их, проблема исчезла.
источник
перейти к пути проекта, установленному FLASK_APP = ABC.py SET FLASK_ENV = разработка
flask run -h [yourIP] -p 8080 вы будете следовать o / p на CMD: - * Обслуживание приложения Flask "expirement.py" (отложенная загрузка) * Среда: разработка * Режим отладки: включен * Перезапуск со статом * Отладчик активен ! * PIN-код отладчика: 199-519-700 * Работает на http: // [yourIP]: 8080 / (нажмите CTRL + C, чтобы выйти)
источник
Вы также можете установить хост (чтобы выставить его в сети с IP-адресом) и порт через переменные среды.
См. Как получить все доступные параметры команды для установки переменных среды?
источник
Создайте файл
.flaskenv
в корневом каталоге проекта.Параметры в этом файле обычно:
Если у вас есть виртуальная среда, активируйте ее и выполните
pip install python-dotenv
.Этот пакет будет использовать
.flaskenv
файл, и объявления внутри него будут автоматически импортироваться через сеансы терминала.Тогда вы можете сделать
flask run
источник