[Zope-dev] SVN: zope.server/branches/achapman-exc-info/src/zope/server/http/ further compliance with WSGI PEP.

Tres Seaver tseaver at palladion.com
Tue May 17 12:02:00 EDT 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 05/17/2011 10:14 AM, Satchidanand Haridas wrote:

> --- zope.server/branches/achapman-exc-info/src/zope/server/http/wsgihttpserver.py	2011-05-17 12:41:54 UTC (rev 121686)
> +++ zope.server/branches/achapman-exc-info/src/zope/server/http/wsgihttpserver.py	2011-05-17 14:14:20 UTC (rev 121687)
> @@ -77,12 +77,16 @@
>          env = self._constructWSGIEnvironment(task)
>  
>          def start_response(status, headers, exc_info=None):
> +            if task.wroteResponseHeader() and not exc_info:
> +                raise AssertionError("start_response called a second time "
> +                                     "without providing exc_info.")
>              if exc_info:
>                  try:
>                      if task.wroteResponseHeader():
>                          raise exc_info[0], exc_info[1], exc_info[2]
>                      else:
> -                        pass
> +                        # As per WSGI spec existing headers must be cleared
> +                        task.accumulated_headers = None
>                  finally:
>                      exc_info = None
>              # Prepare the headers for output
> @@ -110,12 +114,16 @@
>          env['wsgi.handleErrors'] = False
>  
>          def start_response(status, headers, exc_info=None):
> +            if task.wroteResponseHeader() and not exc_info:
> +                raise AssertionError("start_response called a second time "
> +                                     "without providing exc_info.")
>              if exc_info:
>                  try:
>                      if task.wroteResponseHeader():
>                          raise exc_info[0], exc_info[1], exc_info[2]
>                      else:
> -                        pass
> +                        # As per WSGI spec existing headers must be cleared
> +                        task.accumulated_headers = None
>                  finally:
>                      exc_info = None
>              # Prepare the headers for output

I think AssertionError is the wrong type of exception here:  it has
"debugging / testing" semantics which seem inappropriate.  I think we
would be better of raising an instance of a WSGI-specific exception type

Thanks for the careful testing!



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

iEYEARECAAYFAk3Sm/gACgkQ+gerLs4ltQ7oVQCfa0vEWPcASmLdO2BDeEzoeI5j
eZYAniT/BCbFojmKxjq0did6wXLmmmiG
=udSc
-----END PGP SIGNATURE-----



More information about the Zope-Dev mailing list