Servidor Flask local, expor na rede local

Fiz um projeto no Flask e está no server de teste na porta 5000, alguém como faço para liberar o app para rede local?

Uma maneira de resolver o problema, é setando a variável host da sua aplicação Flask para o valor 0.0.0.0.

Segue um exemplo da configuração que deve ser feita:

hello.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

Depois para executar a aplicação, devemos executar com o seguinte comando:

python hello.py

Repare nas mensagens que são exibidas no shell

* Serving Flask app 'hello'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://192.168.157.x:5000

Desta forma será feito o bind da sua aplicação com todos os endereços ip atuais que estão ligados ao seu host e na porta especificada.

Sua aplicação agora está acessível via a rede local.

Repare que neste exemplo coloquei um x no último endereço que está no log. Isso não é um endereço IP válido. Deixei assim proposital para caso acesse este endereço ocorrer um erro. O endereço que você deve acessar é o que está sendo exibido no log da aplicação, no shell do seu interpretador Python.

Você pode acessar esta aplicação completa no github.

Configuração via linha de comando

Também é possível configurar o host via linha de comando, neste caso basta utilizar o comando:

flask --app hello run --host 0.0.0.0

Repare que aqui a ordem dos argumentos é importante e o --host deve ser após o comando run. Neste caso estou supondo que o script escrito em Python se chamada hello.py.

Para mais informações consulte a documentação.