Bandwith Shaping

Heiko Wundram modelnine at ceosg.de
Wed May 4 17:23:12 EDT 2005


Am Mittwoch, 4. Mai 2005 20:11 schrieb phil:
> But those packets ( I assume TCP ) are going to stack up somewhere,
> the sender is gonna keep trying and retrying.  In other words
> you are increasing overall load to someone's router and the
> network.

This is not true, as TCP tries to adjust its sending speed at the sender end 
to the receiving speed at the receiver end (it raises speed until packets 
start getting dropped, and when they are, it starts decreasing send speed 
again).

Of course, this requires a proper TCP implementation, but any operating system 
should have one.

What you said, with a sleep(.01) is actually not quite the way to go. What you 
could do is something like the following:

MAX_RATE = 1*1024 # (1k)
MAX_SEND = 1024
data = "blabber"
sent = 0
starttime = time.time() - 0.01
while data:
	curtime = time.time()
	if sent / ( curtime - starttime ) > MAX_RATE:
		time.sleep(0.5)
		continue
	newsent = sock.send(data[:MAX_SEND])
	data = data[newsent:]
	sent += newsent

> Someone correct me if I'm drunk on this.

See above. ;)

-- 
--- Heiko.
listening to: Pearl Jam - Man Of The Hour
  see you at: http://www.stud.mh-hannover.de/~hwundram/wordpress/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-list/attachments/20050504/12161f5e/attachment.sig>


More information about the Python-list mailing list