Hi,

This is not a python-specific problem. See
http://en.wikipedia.org/wiki/Nagle's_algorithm

-Mike

On 17-Apr-08, at 3:08 AM, Robert Hölzl wrote:
hello,

I tried to implement a simple python XMLRPC service on a win32 environment (client/server code inserted below). The profiler of the client told me, that a simple function call needs about 200ms (even if I run it in a loop, the time needed per call stays the same).

After analysing the problem with etherreal I found out, that the XMLRPC request is transmitted via two TCP packets. One containing the HTTP header and one containting the data. But the acknowledge to the first TCP packet is delayed by 200ms.

I tried around on the server side and found out that if the server reads exactly all bytes transfered in the first TCP frame (via socket.recv()), the next socket.recv(), even if reading only one byte, needs about 200 ms. But if I read one byte less than transfered in the first TCP frame and then reading 2 bytes (socket.recv(2)) there is no delay, although the same total amount of data was read.

After some googling I found the website http://support.microsoft.com/?scid=kb%3Ben-us%3B823764&x=12&y=15 , which proposed a workaround (modifing the registryentry for the tcp/ip driver) that did work. But modifing the clients registry settings is no option for us.

Is there anybody who nows how to solve the problem? Or is it even a problem if the python socket implementation?

By the way: I testet Win2000 SP4 and WinXP SP2 with Python 2.3.3 and Python 2.5.1 each.

CLIENT:
----------
import xmlrpclib
import profile
server = xmlrpclib.ServerProxy("http://server:80";)
profile.run('server.test(1,2)')

SERVER:
----------
import SimpleXMLRPCServer
def test(a,b): return a+b
server = SimpleXMLRPCServer.SimpleXMLRPCServer( ('', 80) )
server.register_function(test)
server.serve_forever()

--
Mit freundlichen Grüßen,
Best Regards,

Robert Hölzl
BALTECH AG

Firmensitz: Lilienthalstrasse 27, D-85399 Hallbergmoos
Registergericht: Amtsgericht München, HRB 115215
Vorstand: Jürgen Rösch (Vorsitzender), Martina M. Schuster
Aufsichtsratsvorsitzende: Eva Zeising

<robert_hoelzl.vcf>_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/mike.klaas%40gmail.com

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to