Fábricas de Aplicações e Blueprints
Estruture aplicações Flask 3.1 maiores com fábricas e blueprints.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
def create_app(config=None):
app = Flask(__name__)
app.config.from_object(config or "config.Dev")
from .users import bp as users_bp
app.register_blueprint(users_bp)
return appQuando usar isso:
- Aplicações com múltiplos blueprints
- Teste de troca de configurações
- Inicialização de extensões na fábrica
Exemplo de Trabalho
from flask import Blueprint, Flask
users = Blueprint("users", __name__)
@users.get("/")
def list_users():
return {"users": []}
def create_app():
app = Flask(__name__)
app.register_blueprint(users, url_prefix="/users")
return appO que isso demonstra:
- Registro de blueprint
url_prefix- Padrão
create_app
Análise Detalhada
Como Funciona
- A fábrica atrasa a criação da aplicação até que a configuração seja conhecida.
- Blueprints isolam rotas e pastas estáticas.
- Extensões chamam
init_appdentro da fábrica.
Armadilhas
- Validação de limites ignorada - Dados inválidos chegam às camadas de persistência. Correção: Valide com Pydantic ou formulários do framework na borda.
- Vazamento de rastros de pilha - Clientes veem erros internos. Correção: Mapeie exceções para respostas HTTP estáveis.
- Bloqueio de loops de eventos assíncronos - Workers param sob carga concorrente. Correção: Use drivers assíncronos ou wrappers de threadpool.
- Segredos em controle de versão - Credenciais vazam pelo histórico do git. Correção: Carregue segredos de variáveis de ambiente ou de um vault em tempo de execução.
- Falta de observabilidade - Incidentes são difíceis de depurar. Correção: Adicione logs estruturados, métricas e IDs de requisição.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Framework alternativo neste cookbook | Padrão da equipe ou monólito existente | API Greenfield com restrições diferentes |
| BaaS Gerenciado | Apenas MVP de CRUD | Autenticação personalizada, fluxos de trabalho ou necessidades de conformidade |
| gRPC | RPC interno de alto desempenho | Clientes HTTP públicos e acesso ao navegador |
FAQs
Quando devo adotar fábricas Flask?
Use quando os padrões e trade-offs desta página corresponderem à sua API ou limite de dados.
Qual é o principal erro de produção com fábricas Flask?
Ignorar validação, timeouts ou contratos de erro explícitos na borda HTTP.
Como testar fábricas Flask?
Use o cliente de teste do framework, substitua dependências e afirme o status mais a forma do JSON.
Fábricas Flask funcionam com Python 3.14?
Sim - os exemplos visam Python 3.14 com versões de framework fixadas do rodapé da pilha.
Como fábricas Flask se relacionam com Pydantic 2?
Valide e serialize nas bordas; mantenha os serviços funcionando com objetos de domínio tipados.
Síncrono ou assíncrono?
Prefira rotas assíncronas quando I/O domina; mantenha o trabalho de CPU pequeno ou descarregue para workers.
Onde a lógica de negócios deve residir?
Handlers finos; serviços possuem regras; repositórios possuem consultas.
Como documentar APIs?
Publique documentação OpenAPI ou de esquema que corresponda aos modelos de resposta no código.
Como lidar com versionamento?
Versionamento explícito de URL ou cabeçalho com janelas de depreciação - evite quebras silenciosas.
O que devo ler a seguir?
Siga os links Relacionados para a próxima camada de profundidade nesta seção.
Como me manter seguro?
Autentique chamadores, autorize por recurso, limite a taxa e nunca registre segredos.
Primeiro passo para performance?
Meça a latência do DB e de upstream antes de trocar de framework.
Relacionado
- Flask Basics - Rotas e requisições
- Application Factories & Blueprints - Estrutura
- Building REST APIs - Endpoints JSON
- Deploying Flask - Produção WSGI
Versões da Pilha: Esta página foi escrita para Python 3.14.0 (3.14 estável, 3.13 em manutenção), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.