mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
Move the newly introduced disable_nagle_algorithm flag into the StreamRequestHandler, where it is more appropriate.
This commit is contained in:
parent
5a85d5c4f2
commit
f1d11efb72
2 changed files with 8 additions and 17 deletions
|
@ -223,16 +223,6 @@ The server classes support the following class variables:
|
||||||
desired. If :meth:`handle_request` receives no incoming requests within the
|
desired. If :meth:`handle_request` receives no incoming requests within the
|
||||||
timeout period, the :meth:`handle_timeout` method is called.
|
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
|
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
|
server classes like :class:`TCPServer`; these methods aren't useful to external
|
||||||
users of the server object.
|
users of the server object.
|
||||||
|
|
|
@ -374,7 +374,6 @@ class TCPServer(BaseServer):
|
||||||
- socket_type
|
- socket_type
|
||||||
- request_queue_size (only for stream sockets)
|
- request_queue_size (only for stream sockets)
|
||||||
- allow_reuse_address
|
- allow_reuse_address
|
||||||
- disable_nagle_algorithm
|
|
||||||
|
|
||||||
Instance variables:
|
Instance variables:
|
||||||
|
|
||||||
|
@ -392,8 +391,6 @@ class TCPServer(BaseServer):
|
||||||
|
|
||||||
allow_reuse_address = False
|
allow_reuse_address = False
|
||||||
|
|
||||||
disable_nagle_algorithm = False
|
|
||||||
|
|
||||||
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
|
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True):
|
||||||
"""Constructor. May be extended, do not override."""
|
"""Constructor. May be extended, do not override."""
|
||||||
BaseServer.__init__(self, server_address, RequestHandlerClass)
|
BaseServer.__init__(self, server_address, RequestHandlerClass)
|
||||||
|
@ -444,10 +441,7 @@ class TCPServer(BaseServer):
|
||||||
May be overridden.
|
May be overridden.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
request = self.socket.accept()
|
return self.socket.accept()
|
||||||
if self.disable_nagle_algorithm:
|
|
||||||
request[0].setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, True)
|
|
||||||
return request
|
|
||||||
|
|
||||||
def close_request(self, request):
|
def close_request(self, request):
|
||||||
"""Called to clean up an individual request."""
|
"""Called to clean up an individual request."""
|
||||||
|
@ -655,8 +649,15 @@ class StreamRequestHandler(BaseRequestHandler):
|
||||||
rbufsize = -1
|
rbufsize = -1
|
||||||
wbufsize = 0
|
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):
|
def setup(self):
|
||||||
self.connection = self.request
|
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.rfile = self.connection.makefile('rb', self.rbufsize)
|
||||||
self.wfile = self.connection.makefile('wb', self.wbufsize)
|
self.wfile = self.connection.makefile('wb', self.wbufsize)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue