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.
-
Prefira
httpxpara novos clientes HTTP: ReutilizeClient/AsyncClientcomTimeoutexplícito eraise_for_status()(httpx & requests). -
Nunca bloqueie
asynciocom HTTP síncrono: Usehttpx.AsyncClientouasyncio.to_thread- nãorequestsdentro 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; useextra="ignore"para capturar erros de digitação (pydantic-settings). -
Cacheie fábricas de configurações:
@lru_cacheemget_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_typeemtenacity- não tente novamente erros de cliente 4xx (tenacity). -
Adicione jitter ao backoff:
wait_exponential_jitterevita 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_sleepnas retentativas:before_sleep_logtorna os loops de retentativa visíveis nas ferramentas de observabilidade. -
Armazene UTC em bancos de dados: Converta com
zoneinfooupendulumnos limites de exibição - não use datetimes locais ingênuos (pendulum / arrow). -
Aplique
EXIF transposeantes de miniaturas: Fotos de celular aparecem de lado semImageOps.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.formatdo Pillow, não apenas noContent-Typedo cliente. -
Use
BytesIOem memória para exportações de API: Pipelinesopenpyxlereportlabnã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
lxmlpara 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_lateeprefetchbaixo: 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 legadosession.query. -
Saída humana rica em
stderr: Mantenhastdoutlegí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.
FAQs
Quantas bibliotecas HTTP um serviço deve usar?
Padronize em httpx por serviço - múltiplos conjuntos de clientes multiplicam as políticas de timeout e retentativa.
Quando o stdlib é suficiente sem pendulum?
Quando as APIs impõem strings ISO 8601 UTC - use datetime + zoneinfo e pule dependências extras.
Celery para todo trabalho em segundo plano?
Não - BackgroundTasks do FastAPI e filas em processo lidam com trabalho de subsegundo; Celery quando você precisa de workers horizontais.
Como escolho entre SQLModel e Django ORM?
Corresponda à fronteira do framework web - SQLModel com FastAPI; Django ORM dentro de aplicativos Django.
Relacionado
- Noções Básicas de Ambientes e Empacotamento - gerenciamento de dependências
- Segurança de Dependência e Cadeia de Suprimentos - auditoria de dependências
- Noções Básicas de FastAPI - integração de framework
- Noções Básicas de Bancos de Dados - profundidade da camada de dados
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+.