Skip to main content

A Session and Caching library with WSGI Middleware

Project description

About

Beaker is a web session and general caching library that includes WSGI middleware for use in web applications.

As a general caching library, Beaker can handle storing for various times any Python object that can be pickled with optional back-ends on a fine-grained basis.

Beaker was built largely on the code from MyghtyUtils, then refactored and extended with database support.

Beaker includes Cache and Session WSGI middleware to ease integration with WSGI capable frameworks, and is automatically used by Pylons.

Features

  • Fast, robust performance
  • Multiple reader/single writer lock system to avoid duplicate simultaneous cache creation
  • Cache back-ends include dbm, file, memory, memcached, and database (Using SQLAlchemy for multiple-db vendor support)
  • Signed cookie’s to prevent session hijacking/spoofing
  • Cookie-only sessions to remove the need for a db or file backend (ideal for clustered systems)
  • Extensible Container object to support new back-ends
  • Cache’s can be divided into namespaces (to represent templates, objects, etc.) then keyed for different copies
  • Create functions for automatic call-backs to create new cache copies after expiration
  • Fine-grained toggling of back-ends, keys, and expiration per Cache object

Documentation

Documentation can be found on the Official Beaker Docs site.

Examples

Caching

Basic Example:

from beaker.cache import CacheManager
cm = CacheManager(type='dbm', data_dir='./cache')

cache = cm.get_cache('mytemplate')

def somethingslow():
    # slow stuff
    db_lookups()

# Get the value, this will create the cache copy the first time
# and any time it expires (in seconds, so 3600 = one hour)
result = mycache.get_value(day, createfunc=somethingslow, expiretime=3600)

Using WSGI:

from beaker.middleware import CacheMiddleware

def simple_app(environ, start_response):
    cache = environ['beaker.cache'].get_cache('testcache')
    try:
        value = cache.get_value('value')
    except KeyError:
        value = 0
    cache.set_value('value', value+1)
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ['The current value is: %s' % cache.get_value('value')]

app = CacheMiddleware(simple_app, type='dbm', data_dir='./cache')

Sessions

Using WSGI:

from beaker.middleware import SessionMiddleware

def simple_app(environ, start_response):
    session = environ['beaker.session']
    if not session.has_key('value'):
        session['value'] = 0
    session['value'] += 1
    session.save()
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ['The current value is: %d' % session['value']]

wsgi_app = SessionMiddleware(simple_app, type='dbm', data_dir='./cache')

Source

The latest developer version is available in a Mercurial repository.

Project details


Release history Release notifications

History Node

1.9.1

History Node

1.9.0

History Node

1.8.1

History Node

1.8.0

History Node

1.7.0

History Node

1.7.0dev

History Node

1.6.5.post1

History Node

1.6.5

History Node

1.6.4

History Node

1.6.3

History Node

1.6.2

History Node

1.6.1

History Node

1.6

History Node

1.5.4

History Node

1.5.3

History Node

1.5.2

History Node

1.5.1

History Node

1.5

History Node

1.4.3

History Node

1.4.2

History Node

1.4.1

History Node

1.4

History Node

1.3.1

History Node

1.3.1dev

History Node

1.3

History Node

1.2.3

History Node

1.2.2

History Node

1.2.1

History Node

1.2

History Node

1.1.3

History Node

1.1.2

History Node

1.1.1

History Node

1.1

History Node

1.0.3

History Node

1.0.2

History Node

1.0.1

History Node

1.0

History Node

0.9.5

This version
History Node

0.9.4

History Node

0.9.3

History Node

0.9.2

History Node

0.9.1

History Node

0.9

History Node

0.8.1

History Node

0.8

History Node

0.7.5

History Node

0.7.4

History Node

0.7.3

History Node

0.7.2

History Node

0.7.1

History Node

0.7

History Node

0.6.3

History Node

0.6.2

History Node

0.6.1

History Node

0.6

History Node

0.5

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
Beaker-0.9.4.tar.gz (36.5 kB) Copy SHA256 hash SHA256 Source None Apr 13, 2008

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