summaryrefslogtreecommitdiff
path: root/Lib/SocketServer.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-09-01 03:25:14 +0000
committerGuido van Rossum <guido@python.org>2000-09-01 03:25:14 +0000
commit01fed4d4e6a2d5f4ff85236bb3430cdfef5e4ada (patch)
tree823bfc7c7ff6d6847ef572f0173129a9f57024f7 /Lib/SocketServer.py
parentb709df381034b6055f03644a8f2eb35cfc6cb411 (diff)
downloadcpython-git-01fed4d4e6a2d5f4ff85236bb3430cdfef5e4ada.tar.gz
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.
Diffstat (limited to 'Lib/SocketServer.py')
-rw-r--r--Lib/SocketServer.py14
1 files changed, 12 insertions, 2 deletions
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()