[Zope-dev] Publisher, WSGI and possibility for simplification

Sylvain Viollon sylvain at infrae.com
Thu Jul 7 12:40:05 EDT 2011


On Thu, 7 Jul 2011 16:15:38 +0100
Laurence Rowe <l at lrowe.co.uk> wrote:


  Hello,

> I was interested to see that Pyramid seems to be experimenting with a
> non-wsgi approach now too for transaction integration
> (http://groups.google.com/group/pylons-devel/browse_thread/thread/f05c56072e43f214/3006cbaf0258c568.)
> I really don't have enough experience with WSGI to know which is the
> best way to do it.
> 
> I took a brief look at the documentation at
> http://www.infrae.com/download/tools/infrae.wsgi where some of the
> motivations behind it are mentioned. The builtin Zope2 WSGI publisher
> is still very new, and seems to have some rough edges still when
> running in mod_wsgi (possibly due to conflicts with Zope registered
> signal handlers.) Is it only that you think that the Zope2 WSGI
> publisher is not ready yet, or are there other problems?
> 

  The main reason I made this project (infrae.wsgi) is that I had a
  customer that wanted to have Zope running in a WSGI stack with some
  repoze.bfg application, one year ago.

  It was for Zope 2.12 (or even 2.11, I don't remember well). I tested
  the WSGIPublisher in that Zope version, and I got errors as soon as I
  tried something more complicated than a simple hello world. (Opening
  the ZMI didn't work). I didn't even test with mod_wsgi at
  that time. Repoze.zope2 was for much older versions of Zope 2 and
  didn't work either. So it was not definitely ready yet.

  I saw since that lot of efforts have been made, and the default WSGI
  publisher works probably better now in 2.13, or the trunk.

  What infrae.wsgi does, is providing:

  - a (simple) alternate boot code for Zope : not all the parameters of
    the zope.conf are applied ; mainly only DB configuration, products
    and ZCML loading are done. No signal handling, no logging
    configuration (just using Python logging facilities and Paster
    configuration for it works), nor any other parameters that would be
    related to the server part are done for example,

  - an equivalent of the WSGIPublisher code (written in completely
    different fashion that the default WSGIPublisher code, since I
    could not get my head around that code to fix the errors I
    encountered),

  - support to get zope.testbrowser working with this (that I don't
    use anymore actually). Testing code that do streaming with
    Products.File.testbrowser doesn't work (the magic is in ZServer,
    and the TestBrowser is hooked before), this fix this issue.

  After I changed it to have a better and more useful error reporting
  by default (which is nice when customer sends you only the error, and
  don't tell you what they did), and a different way to render errors
  (I find the code completely crazy in Zope 2 for that). Because of
  that last point, it is not really compatible Zope 2 100%.

  I use it on production for one year now, on big sites, and didn't had
  any problem.

> I'd certainly support simplifying the publisher, it has grown very
> complex as more and more functionality has been grafted on over the
> years. In the long run I'd much rather see something that only used
> __getitem__ for traversal and never getattr.
> 

  I would love to have something more easy to understand and use, with
  less magic, and not included in the REQUEST like that.

  Regards,

  Sylvain,


-- 
Sylvain Viollon -- Infrae
t +31 10 243 7051 -- http://infrae.com
Hoevestraat 10 3033GC Rotterdam -- The Netherlands


More information about the Zope-Dev mailing list