跳转到主要内容

Django缓存装饰器+失效函数

项目描述

django-cache-utils2提供缓存装饰器和失效函数。

安装

pip install django-cache-utils2

使用

from cache_utils2 import cached, invalidate

@cached(60)
def foo(x, y=0):
    print 'foo is called'
    return x+y

foo(1, 2) # foo is called
foo(1, y=2)
foo(5, 6) # foo is called
foo(5, 6)
invalidate(foo, {'x': 1, 'y': 2})
foo(1, 2) # foo is called
foo(5, 6)
foo(x=2) # foo is called
foo(x=2)

class Foo(object):
    @cached(60)
    def foo(self, x, y):
        print "foo is called"
        return x+y

obj = Foo()
obj.foo(1,2) # foo is called
obj.foo(1,2)

invalidate(Foo.foo, {'x': 1, 'y': 2})
obj.foo(1,2) # foo is called

Django示例

from django.db import models
from cache_utils2 import cached, invalidate

class CityManager(models.Manager):

    # cache a method result. 'self' parameter is ignored
    @cached(60*60*24)
    def default(self):
        return self.active()[0]

    # cache a method result. 'self' parameter is ignored, args and
    # kwargs are used to construct the cache key
    @cached(60*60*24)
    def get(self, *args, **kwargs):
        return super(CityManager, self).get(*args, **kwargs)


class City(models.Model):
    # ... field declarations

    objects = CityManager()

    # cache django model instance method result by instance pk
    @cached(30, vary='self.pk')
    def has_offers(self):
        return self.offer_set.count() > 0

# invalidation of model methods
invalidate(City.has_offers, {'self.pk': 1}

注意

如果装饰函数返回cache_utils2.NO_CACHE,缓存将绕过。

运行测试

获取源代码并运行runtests.py

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分布

django-cache-utils2-0.1.tar.gz (5.2 kB 查看哈希)

上传时间:

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面