mod_wsgi WSGI script for non-frameworked Python web development
Question: Most guides I saw for creating the WSGI file for use with mod_wsgi either sets
it up for Django or Pylons. However, I would like to create the wsgi file
without setting it up for any particular framework. How do I do this. The
following is a code from the wsgi script for use with Django:

    
    
    import os, sys
    sys.path.append('/home/user/dev')
    sys.path.append('/home/user/dev/site1')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'site1.settings'
    
    import django.core.handlers.wsgi
    
    application = django.core.handlers.wsgi.WSGIHandler()
    

The [mod_wsgi integration from
google](http://code.google.com/p/modwsgi/wiki/VirtualEnvironments) said that I
need to add the following code to the WSGI script to overlay the BASELINE
environment (yep, I am using a baseline and application-specific virtualenv):

    
    
    import site
    site.addsitedir('/usr/local/pythonenv/PYLONS-1/lib/python2.5/site-packages')
    

How will my WSGI script look like if I am not using it for any particular
framework?

**EDIT:** This is for use with Apache server


Answer: For the simple wsgi application in [PEP
333](http://www.python.org/dev/peps/pep-0333/):

    
    
    def simple_app(environ, start_response):
        status = '200 OK'
        response_headers = [('Content-type', 'text/plain')]
        start_response(status, response_headers)
        return ['Hello world!\n']
    
    application = simple_app
    

In other words, you don't _have_ to do any setup at all. You just have to make
sure that mod_wsgi can find an `application` object that conforms to wsgi in
your module.

For security reasons, you really ought to define your application in another
module outside any directories published by apache, and limit the code in your
wsgi file to the minimum required to import that module and bind the wsgi
application within to the `application` variable.

