WSGI - How Does It Affect Me?

Damjan gdamjan at gmail.com
Sun Oct 8 17:47:24 EDT 2006


> So I keep hearing more and more about this WSGI stuff, and honestly I
> still don't understand what it is exactly and how it differs from CGI
> in the fundamentals (Trying to research this on the web now)
> 
> What I'm most confused about is how it affects me.  I've been writing
> small CGI programs in Python for a while now whenever I have a need
> for a web program.  Is CGI now considered "Bad"?  

Well, mostly "yes" :)

> I've just always 
> found it easier to write something quickly with the CGI library than
> to learn a framework and fool with installing it and making sure my
> web host supports it.
> 
> Should I switch from CGI to WSGI?  What does that even mean?  What is
> the equivalent of a quick CGI script in WSGI, or do I have to use a
> framework even for that?  What do I do if frameworks don't meet my
> needs and I don't have a desire to program my own?

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

To serve it as a CGI just:
from wsgiref.handlers import CGIHandler
CGIHandler().run(simple_app)

It's not that complicated isn't it... and later you might want to move to
mod_python, scgi or fastcgi or IIS... you will not have to modify
simple_app a bit.

OR... you might want to use the EvalException middleware... just wrap your
simple_app like this:
app = EvalException(simple_app)

(well, due to it's simplicity EvalException can only work in single-process,
long running WSGI servers like not in CGI) so:

s = wsgiref.simple_server.make_server('',8080, app)
s.server_forever()

More info at
http://wsgi.org/wsgi/Learn_WSGI

> 3. Using IIS at all for that matter, does WSGI work on IIS, do any
> frameworks?

There's an IIS server gateway (WSGI server) but you can always run WSGI
applications with CGI, as seen above.



-- 
damjan



More information about the Python-list mailing list