Opened 9 years ago

Closed 9 years ago

#1782 defect closed fixed (fixed)

web2's WSGIHandler incorrectly advertises twisted as a multiprocess environment

Reported by: pjenvey Owned by:
Priority: normal Milestone:
Component: web2 Keywords:
Cc: Branch:
Author: Launchpad Bug:

Description

web2's WSGIHandler incorrectly sets the 'wsgi.multiprocess' option to True

The WSGI PEP might not explain this in the clearest manner, but this option is reserved for environments that spawn separate processes for separate requests (such as Apache, mod_python)

This incorrect setting leads to WSGI apps making incorrect assumptions about the environment (Paste is a good example -- it disables the EvalException debugging tool if this value is True)

Change History (6)

comment:1 Changed 9 years ago by pjenvey

  • Summary changed from web2 wsgi's environment incorrectly advertises itself as a multiprocess environment to web2's WSGIHandler incorrectly advertises twisted as a multiprocess environment

comment:2 Changed 9 years ago by jknight

The PEP says:

This value should evaluate true if an equivalent application object may be simultaneously invoked by another process, and should evaluate false otherwise.

That wording led me to believe it was safest to always set it to true, as it indeed _may_ be invoked by another process. But looking back again, I agree it should actually be False.

comment:3 Changed 9 years ago by jknight

Sorry for taking so long to get to this. Simplest patch ever, of course. :)

Index: wsgi.py
===================================================================
--- wsgi.py     (revision 17257)
+++ wsgi.py     (working copy)
@@ -109,7 +109,7 @@
         env['wsgi.input']        = InputStream(request.stream)
         env['wsgi.errors']       = ErrorStream()
         env['wsgi.multithread']  = True
-        env['wsgi.multiprocess'] = True
+        env['wsgi.multiprocess'] = False
         env['wsgi.run_once']     = False
         env['wsgi.file_wrapper'] = FileWrapper
         self.environment = env

comment:4 Changed 9 years ago by dreid

Apply Apply!

comment:5 Changed 9 years ago by foom

  • Resolution set to fixed
  • Status changed from new to closed

(In [17258]) Set wsgi.multiprocess to False rather than True, to better comply with what
the WSGI spec meant to say.

Author: jknight
Reviewer: dreid
Fixes #1782

comment:6 Changed 4 years ago by <automation>

  • Owner jknight deleted
Note: See TracTickets for help on using tickets.