Middleware for use Storm ORM in WSGI applications
Project description
Introduction
Storm is a fast, small and powerful object-relational mapper. Try it to use in web-aware applications.
WSGI application mainly miltithreaded, but Store object is not thread safe.
Middlestorm middleware manage Store objects (one per thread) and add it into environ dictonary.
Simple example
- There are 3 ways to create middleware:
class
decorator
Paste configuration
Class middleware:
from wsgiref.simple_server import make_server from storm.database import create_database from middlestorm import MiddleStorm def storm_app(environ, start_response): store = environ['storm.store'] # ... db = create_database('postgres://user:password@host/base') app = MiddleStorm(storm_app, db) make_server('', 8000, app).serve_forever()
Decorator middleware:
from wsgiref.simple_server import make_server from storm.database import create_database import middlestorm @middlestorm.decorator(create_database('postgres://user:password@host/base')) def storm_app(environ, start_response): store = environ['storm.store'] # ... make_server('', 8000, storm_app).serve_forever()
To create middleware via Paste configuration, add a stanza to the .ini file:
[filter:middlestorm] use = middlestorm#middlestorm db_uri = sqlite:myapp.db
and then add that filter to the Paste pipeline (again, in the .ini file):
[pipeline:main] pipeline = middlestorm myapp
By default Store placed in variable storm.store. This can be customized:
app = MiddleStorm(storm_app, db, key='custom.mystore')
or decorator style:
@middlestorm.decorator(db, key='custom.mystore') def storm_app(environ, start_response): store = environ['custom.mystore']
or in the Paste configuration:
[filter:middlestorm] use = middlestorm#middlestorm db_uri = sqlite:myapp.db key = myapp.store
Legal
Middlestorm is a part of storm support tools and distributed under terms of GNU LGPL v.2.1.
Copyright 2007 - 2008 Vsevolod Balashov.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.