2013-01-24 21 views
10

Zbudowałem serwer xml-rpc w Pythonie za pomocą SimpleXMLRPCServer, zgodnie z przykładem w dokumentacji Pythona. Wywołuję go z klienta Python na tym samym komputerze. Ciało funkcji serwera wykonuje bardzo szybko samodzielnie.Bardzo powolny xmlrpc w Pythonie: jedna sekunda na wywołanie

Ale uważam, że wydajność klienta xmlrpc jest niesamowicie powolna, biorąc jedną sekundę za połączenie. (Korzystanie z xmlrpclib.)

Technika przyspieszania, którą znalazłem w Internecie (skipping the getfqdn resolution) nie pomogła.

Moja połączyć URI jest:

'http://localhost:50080' 

Używam Pythona 2.7 na Windows 7 x64, ale to działa tak samo dla 32-bitowego Pythonie 2.7.

Odpowiedz

17

Problem wydawał się być z klientem, który rozwiązał problem localhost.

Nowy (szybko) połączyć URI:

'http://127.0.0.1:50080' 

Podobnie dodanie tej linii w pliku hosts% SystemRoot% \ system32 \ drivers \ etc \ hosts ma zasadniczo ten sam efekt:

127.0.0.1 localhost

Każda z tych zmian zwiększyły prędkość połączenia od 1/sek do 88 połączeń/sekundę, a omijając getfqdn rozdzielczość może ją przyspieszyć slig tylko więcej. Niezwykle duża pojemność, ale do zaakceptowania dla mojej aplikacji.

Korekta: nowa wydajność nie wynosi 88 połączeń/sekundę, ale ~ 1000 połączeń/sekundę.

+0

Potwierdzić. Miał ten problem przy użyciu serwera PyMols xmlrpc i był bardzo, bardzo powolny. Plik hostów miał skomentowany wiersz '127.0.0.1 localhost'. Po prostu odkomentowanie rozwiązało problem. Wspaniały! –