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

Reply via email to