[Web-SIG] Updated WSGIHTTPServer.py

Peter Hunt floydophone at gmail.com
Sun Sep 26 17:10:49 CEST 2004


In addition, I fixed an embarrassing bug in which it deleted
querystrings. I'm going to improve on it a lot as time goes on: moving
away from using execfile and dealing with headers in a cleaner
fashion.

I also uploaded my testhttpserver.py script, which contains three
simple test scripts for it. It depends on my new middleware.py module,
something which may turn into a sort of WSGI middleware library. Maybe
we should collaborate on a "standard extensions" type of library?

By the way, to avoid embarrassing bugs such as mine, and since the
spec is finally nearing completion, we should write some unit tests to
ensure compatibility across WSGI implementations.

On Sun, 26 Sep 2004 10:29:37 -0400, Peter Hunt <floydophone at gmail.com> wrote:
> I uploaded the fixed WSGIHTTPServer.py. I'm going to rework it pretty
> substantially pretty soon (probably implemented using Medusa or
> Twisted) and streamline it. It's pretty rough as it is right now, but
> it works.
> 
> 
> 
> 
> On Thu, 23 Sep 2004 15:36:04 -0400, Peter Hunt <floydophone at gmail.com> wrote:
> > Thanks for taking a look. I very very quickly upgraded it by ripping
> > out a lot of the spec's code, and my example app ran OK, so I put it
> > up.
> >
> > I'll make those fixes soon.
> >
> > Also, I'm pretty sure that execfile _will_ reload application scripts,
> > but I may be wrong.
> >
> >
> >
> > On Wed, 22 Sep 2004 22:41:49 -0400, Phillip J. Eby
> > <pje at telecommunity.com> wrote:
> > > >I've updated WSGIHTTPServer.py and wsgicgi.py to reflect the latest
> > > >PEP posted on python.org.
> > > >
> > > >http://st0rm.hopto.org/wsgi/
> > >
> > > FYI, there's an error in your WSGIHTTPServer implementation: it sends a
> > > 'Status: XXX etc' header to the client, but the correct format for HTTP is
> > > just the "XXX etc" part.  Looks like you might've copied that part from the
> > > PEP's CGI example.  This error is probably being masked by the fact that
> > > you're also sending the status to the client when start_response is
> > > initially called, rather than delaying until the first write operation or
> > > non-empty yielded string.  Also, 'start_response' doesn't actually re-raise
> > > 'exc_info' as it should; it only prints the exception to stderr.
> > >
> > > You should also not use 'map()' to wrap the application result
> > > iterator.  It's not illegal, but it's ill-advised since an application is
> > > allowed to produce an unlimited number of empty strings in its output,
> > > resulting in unbounded growth of the list that could use up arbitrarily
> > > large amounts of memory.
> > >
> > > Finally, while this is not a violation of the spec in any way, I notice
> > > that your approach to loading application scripts will recompile and reload
> > > them on every hit.  I don't know if this was intentional or not.
> > >
> > > Oh, and one last thing...  you're checking for 'HTTPS=on' in the
> > > environment, but that's not where it would be found, because your code is
> > > the only code that could set it.  I don't know if the stdlib HTTP server
> > > supports HTTPS, but if it does, you should check the appropriate attribute
> > > or method instead.  Otherwise, it suffices to always set 'wsgi.url_scheme'
> > > to "http".
> > >
> > >
> >
>


More information about the Web-SIG mailing list