from threading import Thread
from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler
def test(a):
return a
server = SimpleXMLRPCServer(("localhost", 12345))
server.register_function(test)
t = Thread(target=server.serve_forever)
t.setDaemon(True)
t.start()
import xmlrpclib
import socket
import time
socket.setdefaulttimeout(2)
try:
s = xmlrpclib.Server('http://localhost:12345')
for i in range(10):
t = time.time()
s.test('x')
t = time.time() - t
print t
except socket.timeout:
pass
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Ich habe mir das Ganze genauer angeschaut und festgestellt, dass die Sekunde Verzögerung in `xmlrpclib.Transport.send_content` in der Zeile `connection.endheaders()` liegt.
Mit socket habe ich die Antwort innerhalb von 0.2 Sekunden.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
entschuldigt, dass ich den Thread nochmal aufwärme. Wie es scheint, wurde er mit einem Achselzucken Richtung Win 7 beendet, aber es scheint sich auch um mein Problem zu handeln.
Ich habe einen auf XMLRPC (SimpleXMLRPCServer) basierenden Chat geschrieben. Der LIEF auch eine ganze Weile ohne merkliche Verzögerungen wie geschmiert. Doch vor etwa einem halben bis dreiviertel Jahr begann die GUI (Tkinter) während der Eingabe einzufrieren. Damals haben wir das Problem aber nicht weiter untersucht. Ich weiß nur, dass weder er noch ich bewusst eine größere Systemänderung durchgeführt haben.
Wir benutzen beide Windows 7. Gestern haben mein Freund und ich uns daran gemacht, das Problem genauer zu untersuchen. Ich habe je einen Echo-server und Client mit socket und mit xmlrpc implementiert. Server war ich (anders herum klappte es wegen irgendwelchen Einstellungen nicht).
Ergebnis:
Über Socket lief alles zügig (lokal 0.005 Sekunden, von meinem Freund aus < 0.1 Sekunden)
Über XML-RPC lief es bei mir zügig (0.01 s bis 0.015 s), aber mein Freund hatte eine Antwortzeit von ca. 5-6 Sekunden. Es fiel auf, dass der serverseitige Prozeduraufruf (die Printausgabe daran) ohne merkliche Verzögerung erschien, aber die zweite Zeile (automatisch vom XMLRPC-Server, in der der Host geloggt wird) wurde erst nach besagten 5 Sekunden ausgegeben, wonach die Antwort wieder schnell bei meinem Freund war.
Ich gehe also davon aus, dass die Verzögerung während der Verarbeitung des Prozedurergebnisses entsteht. Habe oben den Tipp mit Umgehung des Nameservers gelesen und werde das mit meinem Freund ausprobieren. Wäre aber schon komisch, wenn das ca. 5 Sekunden dauert.
Wenn ihr den Code für die Test-Server/-Clients möchtet, kann ich sie hier posten.
Falls jemand das Problem schon kennt und weiß, wie man es beseitigt, wäre ich sehr dankbar.
Viele Grüße,
Micha
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Kurze Info: Zaps Vorschlag, das Logging zu deaktivieren, hat die Verzögerung beseitigt. Eine Lösung ist es zwar nicht, aber momentan kann ich auf das Logging verzichten. Danke!
Diese Nachricht zersört sich in 5 Sekunden selbst ...