================= Moksha Middleware ================= Moksha can run as an application serving platform on its own, but also contains a small piece of WSGI middleware that provides your application with a lot of additional functionality as well. This allows you to use Moksha in your existing `WSGI `_ application. It currently provides the following functionality * Sets up the feed storage and cache for widgets * Handles dispatching moksha applications, which can be any WSGI app * Handles dispatching to individual widgets, which are simply `ToscaWidgets `_ * Sets up `SQLAlchemy` database engines for each application * Initializes applications data models * Loads all application configuration * Sets up the moksha resource connectors * Sets up the stomp callback registry Using the MokshaMiddleware -------------------------- Using the MokshaMiddleware with an existing WSGI application is quite simple. It will look a bit different with each framework, but here is how it looks in TurboGears2. If you're using Moksha as a stand-alone platform, this is automatically setup for you. .. code-block:: python """TurboGears middleware initialization""" from myapp.config.app_cfg import base_config from myapp.config.environment import load_environment # make_base_app will wrap the TG2 app with all the middleware it needs. make_base_app = base_config.setup_tg_wsgi_app(load_environment) def make_app(global_conf, full_stack=True, **app_conf): from moksha.middlware import MokshaMiddleware app = make_base_app(global_conf, wrap_app=MokshaMiddleware, full_stack, **app_conf) return app :Note: It currently requires to be wrapped in the `paste.registry `_ WSGI middleware. TurboGears2 allows us to easily insert middleware directly on top of the raw application, so we then have the ability to use the paste.registry, sessions, and caching.