summaryrefslogtreecommitdiff
path: root/Mailman/Queue/HTTPRunner.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/Queue/HTTPRunner.py')
-rw-r--r--Mailman/Queue/HTTPRunner.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/Mailman/Queue/HTTPRunner.py b/Mailman/Queue/HTTPRunner.py
index df36db0d8..e542dc9a3 100644
--- a/Mailman/Queue/HTTPRunner.py
+++ b/Mailman/Queue/HTTPRunner.py
@@ -15,25 +15,24 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
# USA.
-"""Mailman HTTP runner (server).
-
-"""
+"""Mailman HTTP runner (server)."""
import sys
import logging
-import StringIO
+from cStringIO import StringIO
from wsgiref.simple_server import make_server, WSGIRequestHandler
+from Mailman.Cgi.wsgi_app import mailman_app
from Mailman.Queue.Runner import Runner
from Mailman.configuration import config
-from Mailman.Cgi.wsgi_app import mailman_app
hlog = logging.getLogger('mailman.http')
qlog = logging.getLogger('mailman.qrunner')
-class HTTPRunner(Runner):
+
+class HTTPRunner(Runner):
def __init__(self, slice=None, numslices=1):
pass
@@ -41,23 +40,27 @@ class HTTPRunner(Runner):
pass
+
class MailmanWSGIRequestHandler(WSGIRequestHandler):
-
def handle(self):
"""Handle a single HTTP request with error output to elog"""
- stderr = StringIO.StringIO()
- save_stderr = sys.stderr
+ stderr = StringIO()
+ saved_stderr = sys.stderr
sys.stderr = stderr
- WSGIRequestHandler.handle(self)
- sys.stderr = save_stderr
+ try:
+ WSGIRequestHandler.handle(self)
+ finally:
+ sys.stderr = saved_stderr
hlog.info(stderr.getvalue().strip())
+
server = make_server(config.HTTP_HOST, config.HTTP_PORT,
mailman_app,
handler_class=MailmanWSGIRequestHandler)
+
+
qlog.info('HTTPRunner qrunner started.')
server.serve_forever()
# We'll never get here, but just in case...
qlog.info('HTTPRunner qrunner exiting.')
-