Skip to main content

Tools and config for memcache related caching

Project description

Introduction

This package combines the features from lovely.memcached and plone.memoize.ram. It provides a decorator and utility for Memcaches at EEA. The decorator allows you set dependencies known by lovely.memcached

Note

This add-on doesn’t do anything by itself. It needs to be integrated by a developer within your own products. For reference you can check the eea.app.visualization package.

Installation

zc.buildout

If you are using zc.buildout and the plone.recipe.zope2instance recipe to manage your project, you can do this:

  • Update your buildout.cfg file:

    parts +=
      libevent
      memcached
      memcached-ctl
    
    effective-user = zope-www
    
    [instance]
    ...
    eggs =
      ...
      eea.cache
    
    zcml =
      ...
      eea.cache-overrides
    
    
    [libevent]
    recipe = zc.recipe.cmmi
    url = http://www.monkey.org/~provos/libevent-1.4.8-stable.tar.gz
    
    [memcached]
    recipe = zc.recipe.cmmi
    url = http://www.danga.com/memcached/dist/memcached-1.2.6.tar.gz
    extra_options = --with-libevent=${libevent:location}
    
    [memcached-ctl]
    recipe = lovely.recipe:mkfile
    path = ${buildout:bin-directory}/memcached
    mode = 0755
    content =
     #!/bin/sh
     export LD_LIBRARY_PATH=${libevent:location}/lib
    
     PIDFILE=${memcached:location}/memcached.pid
        case "$1" in
          start)
           ${memcached:location}/bin/memcached -d -u ${buildout:effective-user} -P $PIDFILE
            ;;
          stop)
            kill `cat $PIDFILE`
            ;;
          restart|force-reload)
            $0 stop
            sleep 1
            $0 start
            ;;
          *)
            echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
            exit 1
            ;;
        esac
    
  • Re-run buildout, e.g. with:

    $ bin/buildout -c buildout.cfg
    
  • Restart memcache and Zope:

    $ bin/memcached restart
    $ bin/instance restart
    

Dependencies

EEA Cache has the following dependencies:
  • Plone 4+
  • lovely.memcached

Source code

Latest source code (Zope 2 compatible):

Cache decorator

>>> def key(method, self):
...     return method.__name__
>>> from eea.cache import cache
>>> @cache(key, dependencies=["frontpage"])
... def myMethod(num):
...     return num*num

Lets clear any running memcache

>>> from lovely.memcached.event import InvalidateCacheEvent
>>> from zope.event import notify
>>> notify(InvalidateCacheEvent(raw=True, dependencies=['frontpage']))

Our myMethod will now be cached with the key returned from the method ‘key’ and with dependency ‘frontpage’.

>>> myMethod(2)
4
>>> myMethod(3)
4
>>> notify(InvalidateCacheEvent(raw=True, dependencies=['frontpage']))
>>> myMethod(3)
4

Funding and project management

EEA - European Environment Agency (EU)

Changelog

5.0 - (2012-10-08)

  • Change: Updated README and egg’s metadata [voineali refs #5434]

4.3 - (2012-07-13)

  • Bug fix: fixed markup of HISTORY.txt file [ciobabog refs #5231]

4.2 - (2012-02-06)

  • no changes

4.0 - (2011-11-07)

  • Feature: Plone 4.x compatible release [ghicaale #4309]

0.3 - (2010-11-22)

  • Bug fix: fixed tests namespace in order to be used within hudson [voineali #3821]

0.2 - (2010-11-10)

  • Bug fix: added fake memcache client in order to fix broken doctests [voineali]

0.1 - (2009-11-10)

  • Initial release

Project details


Release history Release notifications

History Node

8.1

History Node

8.0

History Node

7.9

History Node

7.8

History Node

7.7

History Node

7.6

History Node

7.5

History Node

7.4

History Node

7.3

History Node

7.2

History Node

7.1

History Node

7.0

History Node

6.3

History Node

6.2

History Node

6.1

History Node

6.0

History Node

5.1

This version
History Node

5.0

History Node

4.3

History Node

4.2

History Node

4.0

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
eea.cache-5.0.zip (22.4 kB) Copy SHA256 hash SHA256 Source None Oct 8, 2012

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page