Boas Práticas Essenciais de Bibliotecas
Um resumo condensado das 25 práticas mais importantes para escolher e usar bibliotecas essenciais em Python - extraído de todas as páginas desta seção.
Busque em todas as páginas da documentação
Um resumo condensado das 25 práticas mais importantes para escolher e usar bibliotecas essenciais em Python - extraído de todas as páginas desta seção.
Prefira httpx para novos clientes HTTP: Reutilize Client/AsyncClient com Timeout explícito e raise_for_status() (httpx & requests).
Nunca bloqueie asyncio com HTTP síncrono: Use httpx.AsyncClient ou asyncio.to_thread - não requests dentro de rotas FastAPI assíncronas.
Valide JSON na fronteira HTTP: Analise respostas com modelos Pydantic antes da lógica de negócios - a derivação de esquema causa KeyErrors profundos.
Carregue configurações com pydantic-settings: Falhe rapidamente em segredos ausentes na inicialização; use extra="ignore" para capturar erros de digitação (pydantic-settings).
Cacheie fábricas de configurações: @lru_cache em get_settings() evita reanalisar o ambiente por requisição sem globais no tempo de importação.
Tente novamente apenas falhas transitórias: Restrinja retry_if_exception_type em tenacity - não tente novamente erros de cliente 4xx (tenacity).
Adicione jitter ao backoff: wait_exponential_jitter evita tempestades de retentativas sincronizadas contra sistemas de upstream em recuperação.
Emparelhe retentativas com chaves de idempotência: Especialmente para pagamentos e escritas - retentativas sem deduplicação aplicam efeitos colaterais em duplicidade.
Registre before_sleep nas retentativas: before_sleep_log torna os loops de retentativa visíveis nas ferramentas de observabilidade.
Armazene UTC em bancos de dados: Converta com zoneinfo ou pendulum nos limites de exibição - não use datetimes locais ingênuos (pendulum / arrow).
Aplique EXIF transpose antes de miniaturas: Fotos de celular aparecem de lado sem ImageOps.exif_transpose (Pillow).
Limite bytes antes da decodificação de imagem: Rejeite uploads acima de um limite de tamanho para mitigar bombas de descompressão.
Liste formatos de imagem permitidos após a abertura: Confie em img.format do Pillow, não apenas no Content-Type do cliente.
Use BytesIO em memória para exportações de API: Pipelines openpyxl e reportlab não devem exigir arquivos temporários em disco (openpyxl / python-docx / reportlab).
Mantenha modelos de relatório no controle de versão: Layouts de Word e PDF mantidos como modelos superam coordenadas codificadas.
Separe a busca da análise em scrapers: Teste parsers BeautifulSoup contra fixtures HTML sem rede (beautifulsoup4 & lxml).
Prefira APIs em vez de scraping: Respeite robots.txt, limites de taxa e termos de serviço quando o HTML for a única fonte.
Use o backend de parser lxml para HTML grande: Mais rápido e com menor uso de memória do que parsers puramente Python em escala.
Tarefas Celery passam IDs, não objetos ORM: Serializa payloads primitivos em JSON apenas (celery).
Configure serializadores JSON no Celery: Evite pickle - desserialização arbitrária é um risco de segurança.
Defina acks_late e prefetch baixo: Recuperação justa quando workers morrem no meio da tarefa sem perder mensagens do broker.
Use Alembic para alterações de esquema: create_all é apenas para desenvolvimento - produção precisa de histórico de migração (SQLModel / SQLAlchemy).
Estilo select() do SQLAlchemy 2.0: session.exec(select(Model)) - não o legado session.query.
Saída humana rica em stderr: Mantenha stdout legível por máquina quando CLIs canalizam dados (Rich & Textual).
Fixe e audite dependências: Bloqueie versões em pyproject.toml/uv.lock; revise licenças transitivas e CVEs trimestralmente.
Padronize em httpx por serviço - múltiplos conjuntos de clientes multiplicam as políticas de timeout e retentativa.
Quando as APIs impõem strings ISO 8601 UTC - use datetime + zoneinfo e pule dependências extras.
Não - BackgroundTasks do FastAPI e filas em processo lidam com trabalho de subsegundo; Celery quando você precisa de workers horizontais.
Corresponda à fronteira do framework web - SQLModel com FastAPI; Django ORM dentro de aplicativos Django.
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), 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+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026