[Zope-dev] Zope2 and WSGI
Martin Aspeli
optilude+lists at gmail.com
Tue Dec 22 20:51:53 EST 2009
Tres Seaver wrote:
> After a question on the repoze list about running Zope 2.12.x behind a
> WSGI server, I went to try that out. I came up with a minimal .wsgi
> file to run behind mod_wsgi::
>
> $ cat src/Zope2/utilities/skel/bin/zope2.wsgi.in
> from Zope2.Startup.run import configure
> from Zope2 import startup
> configure('<<INSTANCE_HOME>>/etc/zope.conf')
> startup()
> # mod_wsgi looks for the special name 'application'.
> from ZPublisher.WSGIPublisher import publish_module as application
>
> which works, mostly, except that all the App.ImageFile stuff, as well as
> anything else using IStreamIterator, doesn't. Streaming output also
> doesn't work: I'm not sure what else.
That's pretty cool. :)
I think people will be a bit confused about the relationship between
this and repoze.zope2, though. Maybe we can make a statement about how
they differ and whether they ought to be consolidated?
As for IStreamIterator, I think it should work to just return the
iterator as the WSGI body iterator. At least that works in repoze.zope2.
> I set out to fix these bugs in ZPublisher.WSGIPublisher.WSGIResponse,
> and was dismayed to find it an untested hack-up of the original Publish
> module, with an untested subclass of HTTPResponse, itself almost
> completely test-free. So I went down the rabbit hole, and got nearly
> 100% coverage of HTTPResponse on my branch, along with cleaning out some
> decade-old fossils.
That's really awesome!
> Remaining work would be to write tests for WSGIResponse, and then tweak
> it (and HTTPResponse) to make doing the Right Thing(TM) possible for
> responses which are more than just a single big string.
Are there any cases other than IStreamIteartor in that case?
> Beyond fixing those bugs:
>
> - - Document using Zope2 behind mod_wsgi.
>
> - - Write a function usable as a PasteDeploy app factory, to allow
> configuration of Zope2 as the endpoint of a pipeline. Document
> this feature.
>
> - - Supply a stripped-down version of WSGIPublisher, delgating the
> current implementation's "full stack" behavior (error handling,
> transaction / retry integration) to middleware. The guts of this
> can be lifted from repoze.zope2.z2bob. Document using this lighter-
> weight publisher.
+lots :)
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
More information about the Zope-Dev
mailing list