From: Guido van Rossum Date: Fri, 1 Sep 2000 03:25:14 +0000 (+0000) Subject: In class StreamRequestHandler, make the default buffering for rfile X-Git-Tag: v2.0b1~100 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=01fed4d4e6a2d5f4ff85236bb3430cdfef5e4ada;p=python In class StreamRequestHandler, make the default buffering for rfile 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. --- diff --git a/Lib/SocketServer.py b/Lib/SocketServer.py index 5562fb0ef4..a263f8ebb1 100644 --- a/Lib/SocketServer.py +++ b/Lib/SocketServer.py @@ -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()