[Zope-Checkins] SVN: Zope/branches/2.11/ Prevent uncaught exceptions from killing ZServer worker threads.
Tres Seaver
tseaver at palladion.com
Wed Sep 1 09:37:52 EDT 2010
Log message for revision 116088:
Prevent uncaught exceptions from killing ZServer worker threads.
https://bugs.launchpad.net/zope2/+bug/627988.
Changed:
U Zope/branches/2.11/doc/CHANGES.txt
U Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py
-=-
Modified: Zope/branches/2.11/doc/CHANGES.txt
===================================================================
--- Zope/branches/2.11/doc/CHANGES.txt 2010-09-01 13:31:48 UTC (rev 116087)
+++ Zope/branches/2.11/doc/CHANGES.txt 2010-09-01 13:37:52 UTC (rev 116088)
@@ -8,6 +8,9 @@
Bugs Fixed
+ - Prevent uncaught exceptions from killing ZServer worker threads.
+ https://bugs.launchpad.net/zope2/+bug/627988
+
- Ensure that mailhosts which share a queue directory do not double-
deliver mails, by sharing the thread which processes emails for
that directory. https://bugs.launchpad.net/zope2/+bug/574286
Modified: Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py
===================================================================
--- Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py 2010-09-01 13:31:48 UTC (rev 116087)
+++ Zope/branches/2.11/lib/python/ZServer/PubCore/ZServerPublisher.py 2010-09-01 13:37:52 UTC (rev 116088)
@@ -11,28 +11,36 @@
#
##############################################################################
+import logging
+
+LOG = logging.getLogger('ZServerPublisher')
+
class ZServerPublisher:
def __init__(self, accept):
+ from sys import exc_info
from ZPublisher import publish_module
from ZPublisher.WSGIPublisher import publish_module as publish_wsgi
while 1:
- name, a, b=accept()
- if name == "Zope2":
- try:
- publish_module(
- name,
- request=a,
- response=b)
- finally:
- b._finish()
- a=b=None
+ try:
+ name, a, b=accept()
+ if name == "Zope2":
+ try:
+ publish_module(
+ name,
+ request=a,
+ response=b)
+ finally:
+ b._finish()
+ a=b=None
- elif name == "Zope2WSGI":
- try:
- res = publish_wsgi(a, b)
- for r in res:
- a['wsgi.output'].write(r)
- finally:
- # TODO: Support keeping connections open.
- a['wsgi.output']._close = 1
- a['wsgi.output'].close()
+ elif name == "Zope2WSGI":
+ try:
+ res = publish_wsgi(a, b)
+ for r in res:
+ a['wsgi.output'].write(r)
+ finally:
+ # TODO: Support keeping connections open.
+ a['wsgi.output']._close = 1
+ a['wsgi.output'].close()
+ except:
+ LOG.error('exception caught', exc_info=True)
More information about the Zope-Checkins
mailing list