Hi, How about specifying minimal throughput in a form of two values: number of bytes N that have to "arrive" every T seconds? This would solve the problem I guess.
Best, Tomasz > On 03 Sep 2015, at 17:04, Victor Stinner <[email protected]> wrote: > > Hi, > > I proposed a patch to add timeout to StreamReader read methods: > http://bugs.python.org/issue23236 > > The idea is to reset the timeout each time we receive new data. It is > less strict than wait(read(), timeout) which restricts the total > duration. The subtle risk is that a server can "DoS" a client by > sending slowly the reply by packets of a single byte every N seconds. > > But you want combine the two timeouts. For example, > wait(readline(timeout=5.0), 60.0) fails if the server takes longer > than 5 seconds to send data or if the server doesn't send a newline > before 60 seconds. > > What do you think? Is it an useful feature? > > -- > > On Python <= 3.4, socket.sendall() resets the timeout each time that > we succeeded to send at least one byte. The behaviour changed in > Python 3.5: the timeout is not more reset, it's now the maximum total > duration to send all bytes. I found and fixed this when I worked on > the PEP 475 (EINTR). Related discussion on python-dev: > https://mail.python.org/pipermail/python-dev/2015-April/139001.html > > There is also a pending patch to add a recvall() method to socket.socket: > http://bugs.python.org/issue1103213 > > Victor
