django-cache-utils2

Software Screenshot:
django-cache-utils2
Software Details:
Version: 0.1
Upload Date: 11 May 15
Developer: Mikhail Korobov
Distribution Type: Freeware
Downloads: 0

Rating: nan/5 (Total Votes: 0)

django-cache-utils2 is a Django app that provides cached decorator and invalidate function.

Installation

pip install django-cache-utils2

Usage

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 example

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}


Notes

If decorated function returns cache_utils2.NO_CACHE cache will be bypassed.

Running tests

Get the source code and run runtests.py.

Requirements:

  • Python
  • Django

Other Software of Developer Mikhail Korobov

vkontakte
vkontakte

5 Jun 15

django-fab-deploy
django-fab-deploy

14 Apr 15

psd-tools
psd-tools

1 Mar 15

Comments to django-cache-utils2

Comments not found
Add Comment
Turn on images!