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

  • 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

Usage

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


Download files

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

Source Distribution

Beaker-0.8.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

Beaker-0.8-py2.4.egg (69.5 kB view details)

Uploaded Egg

File details

Details for the file Beaker-0.8.tar.gz.

File metadata

  • Download URL: Beaker-0.8.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Beaker-0.8.tar.gz
Algorithm Hash digest
SHA256 b8fcbce902a7e1c055fa622394fe79e3a8a2ba22a778440c4eaff0de691a1ee0
MD5 11dc4c4077022954a6d016d5c847a000
BLAKE2b-256 77994925acd6de09552ba13f18ebea6b58d1374dde88f743c0dd7bf5ab3f25b9

See more details on using hashes here.

File details

Details for the file Beaker-0.8-py2.4.egg.

File metadata

  • Download URL: Beaker-0.8-py2.4.egg
  • Upload date:
  • Size: 69.5 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Beaker-0.8-py2.4.egg
Algorithm Hash digest
SHA256 16f1d8f321a089056ed48c046af7413c658a972ae18d2175c664340e584286f3
MD5 0146f19d9ffc64739cdc41c754d4c264
BLAKE2b-256 b9a5f573ab8e4145b470c8ef2ad7944665f4c70684cd658d5b9e74b7488dd5f9

See more details on using hashes here.

Supported by

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