Настройка сервера Flask dev для отображения по сети

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

7 ответов


хотя это возможно, вы не должны использовать сервер Flask dev в производстве. Сервер Flask dev не предназначен для обеспечения безопасности, стабильности или эффективности. См. документы на установка для правильного решения.


добавить параметр app.run(). По умолчанию он работает на localhost, измените его на app.run(host= '0.0.0.0') для запуска на компьютерах IP-адрес.

документировано на сайте колбы в разделе "внешне видимый сервер" на краткое руководство страница:

Внешний Видимый Сервер

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

просто изменить зов run() метод, чтобы выглядеть так:

app.run(host='0.0.0.0')

Это говорит вашей операционной системе слушать на общедоступном IP.


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

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

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

Flask run --host=0.0.0.0 это говорит вашей операционной системе слушать все общедоступные.

ссылка: http://flask.pocoo.org/docs/0.11/quickstart/


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

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

добавьте в свой проект следующие строки

if __name__ == '__main__':
    app.debug = True
    app.run(host = '0.0.0.0',port=5005)

У меня была та же проблема, я использую PyCharm в качестве редактора, и когда я создал проект, PyCharm создал сервер колбы. То, что я сделал, это создать сервер с Python следующим образом;

Config Python Server PyCharm в основном то, что я сделал, это создать новый сервер, но колбу, если не python

надеюсь, это поможет вам


Проверьте, открыт ли конкретный порт на сервере для обслуживания клиента или нет?

в дистрибутиве 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

добавление к ответу @Shawn, есть также встроенная переменная конфигурации SERVER_NAME. мы можем установить значение 0.0.0.0 в файле конфигурации, который вы указываете в приложении.config.from_pyfile("config.py"). Также обратите внимание,что это переопределит приложение.запустить имя хоста.
Ссылка: http://flask.pocoo.org/docs/0.10/config/