[issue4448] should socket readline() use default_bufsize instead of _rbufsize?

Gregory P. Smith report at bugs.python.org
Thu Nov 27 21:57:11 CET 2008

New submission from Gregory P. Smith <greg at krypto.org>:

>From Kristján Valur Jónsson (kristjan at ccpgames.com) on python-dev:


I came across this in socket.c:

        # _rbufsize is the suggested recv buffer size.  It is *strictly*
        # obeyed within readline() for recv calls.  If it is larger than
        # default_bufsize it will be used for recv calls within read().

What I worry about is the readline() case.  Is there a reason why we
want to strictly obey it for that function?  Note that in the
documentation for _fileobject.read() it says:

        # Use max, disallow tiny reads in a loop as they are very

The same argument surely applies for readline().

The reason I am fretting about this is that httplib.py (and therefore
xmlrpclib.py) specify bufsize=0 when createing their socket fileobjects,
presumably to make sure that write() operations are not buffered but
flushed immediately.  But this has the side effect of setting the
_rbufsize to 1, and so readline() calls become very slow.

I suggest that readline() be made to use at least defaultbufsize, like
read().  Any thoughts?

assignee: gregory.p.smith
messages: 76516
nosy: gregory.p.smith
priority: normal
severity: normal
status: open
title: should socket readline() use default_bufsize instead of _rbufsize?
type: performance
versions: Python 2.6

Python tracker <report at bugs.python.org>

More information about the Python-bugs-list mailing list