Skip to main content

A Session and Caching library with WSGI Middleware

Project description

About

Beaker 0.7 is a new and refactored update to Beaker built on code from the package MyghtyUtils, originally used in the Myghty project. It implements a full set of cache functionality along with sessions that can utilize the caches.

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 Subversion 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.7.2.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

Beaker-0.7.2-py2.4.egg (57.0 kB view details)

Uploaded Egg

File details

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

File metadata

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

File hashes

Hashes for Beaker-0.7.2.tar.gz
Algorithm Hash digest
SHA256 9d256726aee0434b92ae9aa4a63f43bf885273b4cb661a9c1971761676592bf3
MD5 b270ac25fa890b50cda775a4f235418c
BLAKE2b-256 93c1af4d1020d305ed2368abe96ed3f91c0fc9b95c8c590066fbda59253741c9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for Beaker-0.7.2-py2.4.egg
Algorithm Hash digest
SHA256 a2b5310f2211e82631751862f5073a730e46924c3301ad5bfff050b2f6ab34c4
MD5 b83ca18391500d766ca16319134f5531
BLAKE2b-256 9dbec3857e7d31e8fd799e7eeade23d7949b1d47d33f8d5f027b96205e765b93

See more details on using hashes here.

Supported by

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