Skip to main content

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.

Metadata

Release files for Beaker 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Beaker 1.2.2
File Size Uploaded
Beaker-1.2.2.tar.gz 38.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Beaker 1.2.2
File Interpreter ABI Platform
Beaker-1.2.2-py2.6.egg Legacy Egg format - - Details

Total release size: 113.8 kB

Release files / Beaker-1.2.2.tar.gz

Download URL Beaker-1.2.2.tar.gz
Size 38.7 kB
Tags Source
SHA-256 checksum
How to use checksums
48962b9fd0cf70edca7798ecefa264915f2c14e6c36580907f3f740f625e9d28
BLAKE2b-256 checksum
How to use checksums
a0df62b57274cc2f5184592fb87ec81dab39acd1880462b08ae611b0c8ff34cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / Beaker-1.2.2-py2.6.egg

Download URL Beaker-1.2.2-py2.6.egg
Size 75.1 kB
Tags Egg
SHA-256 checksum
How to use checksums
5bafaf1f8fc8a678c29fff07919014775c63f67bd526a2c011362abd52109a52
BLAKE2b-256 checksum
How to use checksums
7a544f36991ba7766e7f8fc7340cde4fed16b9c122bcd1b8c109129f7710ebf4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.14.1

2 release files

1.14.0

2 release files

1.13.0

1 release file

1.12.1

1 release file

1.12.0

1 release file

1.11.0

1 release file

1.10.1

1 release file

1.10.0

1 release file

1.9.1

1 release file

1.9.0

1 release file

1.8.1

1 release file

1.8.0

1 release file

1.7.0

1 release file

1.6.5

1.6.4

1 release file

1.6.3

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6

1 release file

1.5.4

1 release file

1.5.3

1 release file

1.5.2

1 release file

1.5.1

2 release files

1.5

2 release files

1.4.3

1 release file

1.4.2

2 release files

1.4.1

2 release files

1.4

2 release files

1.3.1

2 release files

1.3

2 release files

1.2.3

2 release files

This release

1.2.2 This release

2 release files

1.2.1

2 release files

1.2

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1

1 release file

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0

2 release files

0.9.5

2 release files

0.9.4

1 release file

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9

2 release files

0.8.1

2 release files

0.8

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6

2 release files

0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page