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 distributed under terms of GNU LGPL v.2.1.
Copyright 2007 - present Vsevolod Balashov.
Links
Source code of middlestorm. Arch Linux PKGBUILD.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.