Re: Zope2 and WSGI

Tres Seaver <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <[email protected]>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin Aspeli wrote:
> 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?

repoze.zope2 was written to get pre-eggified, pre-WSGI-aware Zope
(<=2.11.x) deployable using eggs and Paste.  2.12 is eggified, and
speaks a kind of pidgin WSGI;  repoze.zope2 is likely still useful,
becuase it is more "fluent" in WSGI.  See below for futures.

> 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?

response.write() is the other one I know about.  Getting it to do the
Right Thing(TM) under WSGI is going to be tricky, I think.

>> 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.

If it gets that far by Zope 2.13, then we can likely retire repoze.zope2.


Trs.
- --
===================================================================
Tres Seaver          +1 540-429-0999          [email protected]
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAksxogAACgkQ+gerLs4ltQ5A1QCgnMpbgP926y5S/vnq6tsht8Tt
Lw0An0/MvmhLMF3gJTL6f4wp2hL9gfXV
=EKW6
-----END PGP SIGNATURE-----

_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.