Skip to main content

Biblioteca de cache incrivelmente poderosa para Django.

Project description

django-smart-cache

Biblioteca de cache inteligente e automática para Django e Django Rest Framework.

Visão Geral

O django-smart-cache oferece decorators e utilitários para adicionar cache automático em views e viewsets do Django/DRF, invalidando o cache sempre que modelos relacionados sofrem alterações. Ideal para APIs e páginas que precisam de alta performance sem perder a atualização dos dados.

  • Cache automático para views e viewsets
  • Invalidação automática ao alterar modelos relacionados
  • Suporte a autenticação (cache por usuário/token)
  • Fácil integração com projetos Django existentes

Instalação

Requisitos:

  • Python >= 3.8
  • Django == 2.2
  • djangorestframework == 3.10

Instale via pip:

pip install django-smart-cache

Configuração

Adicione django_smart_cache ao seu INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    "django_smart_cache.apps.DjangoSmartCacheConfig",
]

Importante: Para que o Django reconheça os decorators de cache e mapeie corretamente as models que invalidarão o cache, é necessário importar explicitamente as views ou viewsets que utilizam os decorators dentro do método ready do seu apps.py.

Exemplo:

# myapp/apps.py
from django.apps import AppConfig


class MyAppConfig(AppConfig):
    name = "myapp"

    def ready(self):
        from myapp import views
        from myapp.api import viewsets
        ...

Configure o cache do Django normalmente (exemplo com memória local):

CACHES = {
    "default": {
        "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
        "LOCATION": "unique-snowflake",
    }
}

Como Usar

Cache em Viewsets (DRF)

from django_smart_cache.viewsets import cache_viewset


@cache_viewset(models=["myapp.MyModel"], timeout=60)
class MyViewSet(viewsets.ModelViewSet):
    ...
  • models: lista de modelos que, ao serem alterados, invalidam o cache.
  • timeout: tempo do cache em segundos (padrão: 900).

Cache em Views (função ou classe)

from django_smart_cache.views import cache_view


@cache_view(models=["myapp.MyModel"], timeout=60)
def minha_view(request):
    ...

Exemplo Completo

from rest_framework import viewsets, serializers
from django_smart_cache.viewsets import cache_viewset
from .models import MyModel


class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = "__all__"


@cache_viewset(models=["myapp.MyModel"], timeout=60)
class MyViewSet(viewsets.ModelViewSet):
    serializer_class = MySerializer
    queryset = MyModel.objects.all()

Funcionamento Interno

  • O decorator gera uma chave de cache única por usuário/token e parâmetros da requisição.
  • O cache é invalidado automaticamente via signals (post_save, post_delete, m2m_changed) dos modelos informados.
  • Suporta cache para métodos list e retrieve em viewsets, e qualquer view baseada em função/classe.

Testes

O projeto já inclui testes automatizados com pytest e pytest-django.

Para rodar os testes:

pytest

Desenvolvimento

  • Código-fonte: src/django_smart_cache/
  • Testes: src/tests/
  • Exemplo de template: src/tests/templates/cached_template.html

Autor

Alan Gomes (alan.gomes.ag28@gmail.com)

Licença

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_smart_cache-0.1.1.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_smart_cache-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file django_smart_cache-0.1.1.tar.gz.

File metadata

  • Download URL: django_smart_cache-0.1.1.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.10

File hashes

Hashes for django_smart_cache-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d717ab722742b6e6583f65b71f7a3c062c54a0d6727e088ad539aebd5b90af76
MD5 f90353097a8524ec0457b981f8e6e802
BLAKE2b-256 b82845c5c234b7109c8c28ef5db3210b4174de5f3475180d55fcdb4684e10ac6

See more details on using hashes here.

File details

Details for the file django_smart_cache-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_smart_cache-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 069fc9a176a8d0f2817ffcc74df023479b2e4551ad156b75c177d85565232b42
MD5 bf60b37500fb24ac511939b99c4e1782
BLAKE2b-256 05662309260fbf6c719f1c89d88534056fe1f29a92d4e7c8dda3ef8b70d7c42b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page