Skip to content

Commit

Permalink
Merge branch 'release/4.5.8'
Browse files Browse the repository at this point in the history
  • Loading branch information
GrahamDumpleton committed Nov 29, 2016
2 parents eea4900 + 6de8ac6 commit 9cf9bad
Show file tree
Hide file tree
Showing 20 changed files with 1,422 additions and 434 deletions.
248 changes: 165 additions & 83 deletions README.rst

Large diffs are not rendered by default.

528 changes: 413 additions & 115 deletions docs/configuration-directives/WSGIDaemonProcess.rst

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/release-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Release Notes
.. toctree::
:maxdepth: 2

release-notes/version-4.5.8
release-notes/version-4.5.7
release-notes/version-4.5.6
release-notes/version-4.5.5
Expand Down
69 changes: 69 additions & 0 deletions docs/release-notes/version-4.5.8.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
=============
Version 4.5.8
=============

Version 4.5.8 of mod_wsgi can be obtained from:

https://codeload.github.com/GrahamDumpleton/mod_wsgi/tar.gz/4.5.8

Bugs Fixed
----------

* When using HTTP/2 support and ``wsgi.file_wrapper``, the response could
be truncated when ``mod_h2`` was deferring the sending of the response
until after the WSGI request had been finalized.

* Builds were failing on Windows. Insert appropriate ``#if`` conditional
around code which shouldn't have been getting included on Windows.

* When ``mod_wsgi-express`` is run as ``root`` and ``--python-eggs``
option is used, if the directory for the Python eggs didn't exist, it
was created, but the ownership/group were not set to be the user and
group that Apache would run the WSGI application. As a result Python
eggs could not actually be unpacked into the directory. Now change
the ownership/group of the directory to user/group specified when
``mod_wsgi-express`` was run.

* Installation on MacOS X Sierra fails for both CMMI and ``pip install``
methods. This is because Apple removed ``apr-1-config`` and
``apu-1-config`` tools needed by ``apxs`` to install third party
Apache module. A workaround has been incorporated so that installation
still works when using ``pip install``, but there is no workaround for
CMMI method. You will need to use ``pip install`` method and then use
``mod_wsgi-express module-config`` to get the configuration to then
add into the Apache configuration so it knows how to load the mod_wsgi
module. Then configure Apache so it knows about your WSGI application.

* Compilation would fail on MacOS X Sierra as the API was changed for
obtaining task information. This was used to get memory used by the
process.

New Features
------------

* Add ``WSGIIgnoreActivity`` directive. This can be set to ``On`` inside of
a ``Location`` directive block for a specific URL path, and any requests
against matching URLs will not trigger a reset of the inactivity timeout
for a mod_wsgi daemon process. This can be used on health check URLs so
that periodic requests against the health check URL do not interfere with
the inactivity timeout and keep the process running, rather than allowing
the process to restart due to being otherwise idle.

* Added the ``--ignore-activity`` option to ``mod_wsgi-express``. It will
set the ``WSGIIgnoreActivity`` directive to ``On`` for the specific URL
path passed as argument to the option. Any requests against the matching
URL path will not trigger a reset of the inactivity timeout for a
mod_wsgi daemon process.

* Added the ``--module-config`` option to ``mod_wsgi-express`` to get the
Apache configuration snippet you would use to load the mod_wsgi module
from the Python installation direct into Apache, rather than installing
the module into the Apache modules directory.

* Added experimental support for installing mod_wsgi on Windows using ``pip``.
Is only tested with Apache 2.4 and Python 3.5. The Apache installation
must be installed in ``C:\Apache24`` directory. Run ``pip install mod_wsgi``.
The run ``mod_wsgi-express module-config`` and it will generate the
required configuration to add into the Apache configuration file to load
the mod_wsgi module. You still need to separately configure Apache for
your specific WSGI application.
4 changes: 2 additions & 2 deletions docs/user-guides/assorted-tips-and-tricks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ the 'mod_wsgi.version' key within the WSGI environ dictionary::
def application(environ, start_response):
status = '200 OK'
if environ.has_key('mod_wsgi.version'):
output = 'Hello mod_wsgi!'
output = b'Hello mod_wsgi!'
else:
output = 'Hello other WSGI hosting mechanism!'
output = b'Hello other WSGI hosting mechanism!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guides/configuration-guidelines.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ called 'application'. For example::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
output = b'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
10 changes: 5 additions & 5 deletions docs/user-guides/debugging-techniques.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ below::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
output = b'Hello World!'

print >> environ['wsgi.errors'], "application debug #1"

Expand Down Expand Up @@ -487,7 +487,7 @@ application entry point::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!\n\n'
output = b'Hello World!\n'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down Expand Up @@ -583,7 +583,7 @@ object::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!\n\n'
output = b'Hello World!\n'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand All @@ -607,7 +607,7 @@ you can interactively debug your application from the window you ran the
19
20 def application(environ, start_response):
21 -> status = '200 OK'
22 output = 'Hello World!\n\n'
22 output = b'Hello World!\n'
23
24 response_headers = [('Content-type', 'text/plain'),
25 ('Content-Length', str(len(output)))]
Expand Down Expand Up @@ -653,7 +653,7 @@ a wrapper around the application you wish to debug::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!\n\n'
output = b'Hello World!\n'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guides/installation-issues.rst
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ which outputs the values of 'sys.prefix' and 'sys.path'. For example::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
output = b'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guides/quick-configuration-guide.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ examples in this document, is as follows::

def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
output = b'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
2 changes: 1 addition & 1 deletion docs/user-guides/registering-cleanup-code.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ block, with the cleanup code being triggered from the 'finally' block::

def _application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
output = b'Hello World!'

response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
Expand Down
Loading

0 comments on commit 9cf9bad

Please sign in to comment.