Servidor web local com Python: do http.server ao Flask

Duas formas de subir um servidor web na sua máquina com Python: uma linha para servir arquivos estáticos e o Flask para quando você precisa de código. E o cuidado antes de levar isso para produção.

Fala pessoal, tudo certo?

Testar aplicações web localmente é uma prática comum, e o Python facilita muito isso. Neste post, vou mostrar dois caminhos: um que não precisa instalar nada e outro com o Flask, para quando a página precisa de lógica por trás.

Caminho 1: servir arquivos com uma linha

Se você só precisa abrir um HTML no navegador, compartilhar uma pasta na rede local ou testar um site estático, o Python já tem um servidor web embutido:

# dentro da pasta com os arquivos
python3 -m http.server 8000

Pronto. Acesse http://localhost:8000 e a pasta aparece no navegador. Para parar, Ctrl + C.

💡 Dica: é ótimo para passar um arquivo para outra máquina da mesma rede sem pendrive: rode o comando na pasta e acesse http://IP-da-sua-maquina:8000 do outro computador. Só não esqueça de parar o servidor depois.

Caminho 2: Flask, quando precisa de código

O Flask é um microframework web para Python: leve, flexível e ideal para protótipos, APIs pequenas e ferramentas internas.

Primeiro, tenha um ambiente virtual ativo, como mostrei no post sobre venv. Depois, instale o Flask:

python3 -m venv .venv
source .venv/bin/activate
pip install flask

Crie o arquivo app.py:

from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def home():
    return "Olá! Servidor Flask rodando."

@app.route("/ola/<nome>")
def ola(nome):
    return f"Olá, {nome}!"

@app.route("/info")
def info():
    return {"seu_ip": request.remote_addr, "navegador": request.user_agent.string}

E suba o servidor em modo de desenvolvimento:

flask --app app run --debug

Acesse http://127.0.0.1:5000, depois /ola/joao e /info. Repare que a rota /info devolve JSON só por retornar um dicionário.

O --debug faz duas coisas muito úteis: reinicia o servidor sozinho quando você salva o arquivo e mostra o erro detalhado no navegador quando algo quebra.

Acessando de outra máquina

Por padrão, o Flask só aceita conexões da própria máquina. Para testar pelo celular ou por outro computador da rede:

flask --app app run --host 0.0.0.0 --port 5000
🚨 Nunca use --debug com --host 0.0.0.0 numa rede que não é sua. O modo debug permite executar código pelo navegador quando acontece um erro. Ele é feito só para a sua máquina.

E para produção?

O servidor do flask run é só para desenvolvimento. Para colocar no ar de verdade, use um servidor WSGI, como o gunicorn, normalmente atrás de um Nginx:

pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:app

Considerações Finais

Para arquivos estáticos, python3 -m http.server resolve em uma linha. Quando precisar de rotas e lógica, o Flask sobe um servidor de desenvolvimento em poucos minutos. E, quando for para produção, troque o servidor de desenvolvimento por gunicorn.

O próximo passo natural é transformar isso numa API. Mostrei como em criando sua primeira API de tarefas com Flask.

Abs e até a próxima!!!

:wq!

Post publicado originalmente em agosto de 2024 e atualizado em novembro de 2026.

Comentários