[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