transfer rate limiting in socket.py

Peter Silva Peter.Silva at ec.gc.ca
Fri Jun 16 16:53:48 EDT 2006


Hi folks,

I have a need in a network data distribution application to send out
data to folks who want it using the protocol of their choice.   I´d
like it to support a variety of protocols and I don´t want to
implement any of them :-)
http, ftp (via ftplib) , https (dunno how yet), ssl, ssh, sftp (via
paramiko)

The thing is... I want rate-limiting so that in the case of a failure
of a single client
I don´t penalize the other clients, or if my server (which is acting
as a client pushing to remote servers.) goes down, it doesn´t saturate
the link when it comes back.

So I want to have all the protocols limit the number of bytes they send
per second.
It looks like the easiest way to do this is to dive into socket.py...
and look! it says:

# Wrapper module for _socket, providing some additional facilities
# implemented in Python.

note the ´additional facilities implemented in python´ ...

so we just add logic to:
-- add a ´maxrate´ argument to the constructor and/or an attribute to
modify the setting...
--  tally bytes, and time, and know when we are going ´too fast´
--  when too fast..  in the ´flush´ routine, in the synchronous case,
sleep for the correct time to come back under budget.  in the async,
return without writing.
 -- do something similar for reading.

 Anybody think this would be fun?




More information about the Python-list mailing list