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.