[Checkins] SVN: zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/ - required wsgi environment variables set up
jackie
cvs-admin at zope.org
Wed Jul 25 20:16:26 UTC 2012
Log message for revision 127388:
- required wsgi environment variables set up
Changed:
U zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/README.txt
U zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tests.py
U zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tracelog.py
-=-
Modified: zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/README.txt
===================================================================
--- zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/README.txt 2012-07-25 19:41:51 UTC (rev 127387)
+++ zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/README.txt 2012-07-25 20:16:22 UTC (rev 127388)
@@ -195,6 +195,7 @@
>>> def noisy_app(environ, start_response):
... logger = environ['zc.zservertracelog.interfaces.ITraceLog']
... logger.log('beep! beep!')
+ ... return ''
>>> faux_app.app_hook = noisy_app
>>> invokeRequest(req1)
@@ -256,6 +257,7 @@
... conn.update('', 7, 4)
... conn.update('y', 3, 0)
... zc.zservertracelog.tracelog.request_ended(conn)
+ ... return ''
>>> faux_app.app_hook = dbapp1
@@ -289,6 +291,7 @@
... zc.zservertracelog.tracelog.before_traverse(req)
... zc.zservertracelog.tracelog.before_traverse(req)
... zc.zservertracelog.tracelog.request_ended(req)
+ ... return ''
>>> faux_app.app_hook = dbapp2
@@ -299,3 +302,35 @@
A 146419788 2012-01-10 03:10:05.502579 200 ?
E 146419788 2012-01-10 03:10:05.502782
+
+Headers
+=======
+
+The WSGI environment provided by zservertracelog contains all headers required
+as specified in the WSGI specification.
+
+ >>> def header_app(environ, start_response):
+ ... logger = environ['zc.zservertracelog.interfaces.ITraceLog']
+ ... logger.log("wsgi.version: " + str(environ['wsgi.version']))
+ ... logger.log("wsgi.url_scheme: " + environ['wsgi.url_scheme'])
+ ... logger.log("wsgi.errors: " + str(environ['wsgi.errors']))
+ ... logger.log("wsgi.multithread: " + str(environ['wsgi.multithread']))
+ ... logger.log(
+ ... "wsgi.multiprocess: " + str(environ['wsgi.multiprocess']))
+ ... logger.log("wsgi.run_once: " + str(environ['wsgi.run_once']))
+ ... logger.log("wsgi.input: " + str(environ['wsgi.input']))
+ ... return ''
+ >>> faux_app.app_hook = header_app
+ >>> invokeRequest(req1)
+ B 23418928 2008-08-26 10:55:00.000000 GET /test-req1
+ I 23418928 2008-08-26 10:55:00.000000 0
+ C 23418928 2008-08-26 10:55:00.000000
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.version: (1, 0)
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.url_scheme: http
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.errors: <open file '<stderr>', mode 'w' at 0x...>
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.multithread: True
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.multiprocess: True
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.run_once: False
+ - 23418928 2008-08-26 10:55:00.000000 wsgi.input: <cStringIO.StringI object at 0x...>
+ A 23418928 2008-08-26 10:55:00.000000 200 ?
+ E 23418928 2008-08-26 10:55:00.000000
Modified: zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tests.py
===================================================================
--- zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tests.py 2012-07-25 19:41:51 UTC (rev 127387)
+++ zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tests.py 2012-07-25 20:16:22 UTC (rev 127388)
@@ -34,7 +34,7 @@
(re.compile(r'options:'), 'Options:'),
])
-_null_app = lambda environ, start_response: None
+_null_app = lambda environ, start_response: ""
class FauxApplication(object):
Modified: zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tracelog.py
===================================================================
--- zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tracelog.py 2012-07-25 19:41:51 UTC (rev 127387)
+++ zc.zservertracelog/branches/jackie-wsgi-updates/src/zc/zservertracelog/tracelog.py 2012-07-25 20:16:22 UTC (rev 127388)
@@ -104,24 +104,15 @@
"""Overrides HTTPServer.executeRequest()."""
cid = id(task.channel)
_log(cid, 'C')
- env = task.getCGIEnvironment()
- env['wsgi.input'] = task.request_data.getBodyStream()
+ env = self._constructWSGIEnvironment(task)
env['zc.zservertracelog.interfaces.ITraceLog'] = TraceLog(cid)
+ if 'wsgi.logging_info' in env:
+ task.setAuthUserName(env['wsgi.logging_info'])
- def start_response(status, headers):
- # Prepare the headers for output
- status, reason = status_match(status).groups()
- task.setResponseStatus(status, reason)
- if 'wsgi.logging_info' in env:
- task.setAuthUserName(env['wsgi.logging_info'])
- task.appendResponseHeaders(['%s: %s' % i for i in headers])
-
- # Return the write method used to write the response data.
- return wsgihttpserver.fakeWrite
-
# Call the application to handle the request and write a response
try:
- response = self.application(env, start_response)
+ response = self.application(
+ env, wsgihttpserver.curriedStartResponse(task))
except Exception, v:
_log(cid, 'A', 'Error: %s' % v)
_log(cid, 'E')
@@ -139,7 +130,8 @@
_log(cid, 'A', '%s %s' % (getattr(task, 'status', '?'), length))
try:
- task.write(response)
+ for value in response:
+ task.write(value)
except Exception, v:
_log(cid, 'E', 'Error: %s' % v)
raise
More information about the checkins
mailing list