[Python-checkins] r73546 - in python/trunk: Doc/library/socketserver.rst Lib/SocketServer.py

kristjan.jonsson python-checkins at python.org
Wed Jun 24 11:17:05 CEST 2009


Author: kristjan.jonsson
Date: Wed Jun 24 11:17:04 2009
New Revision: 73546
Log:
http://bugs.python.org/issue6192
Move the newly introduced disable_nagle_algorithm flag into the StreamRequestHandler, where it is more appropriate.
Modified:
 python/trunk/Doc/library/socketserver.rst
 python/trunk/Lib/SocketServer.py
Modified: python/trunk/Doc/library/socketserver.rst
==============================================================================
--- python/trunk/Doc/library/socketserver.rst	(original)
+++ python/trunk/Doc/library/socketserver.rst	Wed Jun 24 11:17:04 2009
@@ -223,16 +223,6 @@
 desired. If :meth:`handle_request` receives no incoming requests within the
 timeout period, the :meth:`handle_timeout` method is called.
 
-.. attribute:: TCPServer.disable_nagle_algorithm
-
- If set to True, it will set the TCP_NODELAY attribute of new requests
- connections. This can help alleviate problems with latency in
- request-response type applications. To avoid sending many small packets,
- this option should be used only when bufferning output, such as when
- setting :attr:`StreamRequestHandler.wbufsize` attribute to -1.
-
- .. versionadded:: 2.7
-
 There are various server methods that can be overridden by subclasses of base
 server classes like :class:`TCPServer`; these methods aren't useful to external
 users of the server object.
Modified: python/trunk/Lib/SocketServer.py
==============================================================================
--- python/trunk/Lib/SocketServer.py	(original)
+++ python/trunk/Lib/SocketServer.py	Wed Jun 24 11:17:04 2009
@@ -374,7 +374,6 @@
 - socket_type
 - request_queue_size (only for stream sockets)
 - allow_reuse_address
- - disable_nagle_algorithm
 
 Instance variables:
 
@@ -392,8 +391,6 @@
 
 allow_reuse_address = False
 
- disable_nagle_algorithm = False
-
 def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
 """Constructor. May be extended, do not override."""
 BaseServer.__init__(self, server_address, RequestHandlerClass)
@@ -444,10 +441,7 @@
 May be overridden.
 
 """
- request = self.socket.accept()
- if self.disable_nagle_algorithm:
- request[0].setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, True)
- return request
+ return self.socket.accept()
 
 def close_request(self, request):
 """Called to clean up an individual request."""
@@ -655,8 +649,15 @@
 rbufsize = -1
 wbufsize = 0
 
+ # Disable nagle algoritm for this socket, if True.
+ # Use only when wbufsize != 0, to avoid small packets.
+ disable_nagle_algorithm = False
+
 def setup(self):
 self.connection = self.request
+ if self.disable_nagle_algorithm:
+ self.connection.setsockopt(socket.IPPROTO_TCP,
+ socket.TCP_NODELAY, True)
 self.rfile = self.connection.makefile('rb', self.rbufsize)
 self.wfile = self.connection.makefile('wb', self.wbufsize)
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /