]> granicus.if.org Git - python/commitdiff
In class StreamRequestHandler, make the default buffering for rfile
authorGuido van Rossum <guido@python.org>
Fri, 1 Sep 2000 03:25:14 +0000 (03:25 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 1 Sep 2000 03:25:14 +0000 (03:25 +0000)
and wfile class variables (that the instance can also override).
Change the default for rfile to buffered, because that seems to make a
big difference in performance on some platforms.

An anti-patch is needed to revert the effect in CGIHTTPServer.py which
I'll check in momentarily.

Lib/SocketServer.py

index 5562fb0ef4edb9b87f88c75d64f355bea2548b94..a263f8ebb1376de77995a22286e9952acc5acd8b 100644 (file)
@@ -412,10 +412,20 @@ class StreamRequestHandler(BaseRequestHandler):
 
     """Define self.rfile and self.wfile for stream sockets."""
 
+    # Default buffer sizes for rfile, wfile.
+    # We default rfile to buffered because otherwise it could be
+    # really slow for large data (a getc() call per byte); we make
+    # wfile unbuffered because (a) often after a write() we want to
+    # read and we need to flush the line; (b) big writes to unbuffered
+    # files are typically optimized by stdio even when big reads
+    # aren't.
+    rbufsize = -1
+    wbufsize = 0
+
     def setup(self):
         self.connection = self.request
-        self.rfile = self.connection.makefile('rb', 0)
-        self.wfile = self.connection.makefile('wb', 0)
+        self.rfile = self.connection.makefile('rb', self.rbufsize)
+        self.wfile = self.connection.makefile('wb', self.wbufsize)
 
     def finish(self):
         self.wfile.flush()