Seite 1 von 1

Fast XML-RPC für Python 2.5

Verfasst: Montag 20. August 2007, 07:08
von Zap
Hallo zusammen,

ich beschäftige mich gerade mit der Frage ob ich einen bestehenden XML-RPC Server in Sachen Datenübertragung beschleunigen kann oder ob dies garnicht mehr nötig/möglich ist.
Ich habe den Server unter Python 2.5 laufen und habe einen Anwendungsfall bei dem u.U. größere Datenmengen (~100MB über ein 100Mbit LAN) übertragen werden müssen. Die Performance ist hinnehmbar, würde sie doch gerne optimieren.

Ich habe gelesen das es zur Python 2.2 Zeit ein Modul bei Sourceforge gab mit der Bezeichnung "fast xmlrpc". Wisst ihr ob es einen Nachfolger von diesem Modul für Python 2.5 gibt oder ist dies vielleicht garnicht mehr notwendig?
Gibt es vielleicht Konfigurationsmöglichkeiten um die mitgelieferten xmlrpclib von Python für größere Datenübertragungen zu optimieren?

Vielen Dank schonmal
Gruß Zap

Re: Fast XML-RPC für Python 2.5

Verfasst: Montag 20. August 2007, 08:46
von Leonidas
Zap hat geschrieben:ich beschäftige mich gerade mit der Frage ob ich einen bestehenden XML-RPC Server in Sachen Datenübertragung beschleunigen kann oder ob dies garnicht mehr nötig/möglich ist.
Es ist... schwer. XML-RPC benutzt zur Übertragung ein Textformat, die Daten müssen also erstmal in XML serialisiert werden. Wenn du wirklich schnellere Transfers haben willst, dann solltest du ma prüfen, ob du mit CORBA oder Ice nicht schneller bist (zum Thema IPC habe ich einen Tag bei Simpy, schau mal rein). Ich denke, dass möglicherweise YAML-RPC (*hust*) oder JSON-RPC schneller wären als XML-RPC - aber auch nicht viel.
Zap hat geschrieben:Ich habe gelesen das es zur Python 2.2 Zeit ein Modul bei Sourceforge gab mit der Bezeichnung "fast xmlrpc". Wisst ihr ob es einen Nachfolger von diesem Modul für Python 2.5 gibt oder ist dies vielleicht garnicht mehr notwendig?
Das Modul gibt es immer noch, es heißt py-xmlrpc und sollte auch noch mit Python 2.5 funktionieren.
Zap hat geschrieben:Gibt es vielleicht Konfigurationsmöglichkeiten um die mitgelieferten xmlrpclib von Python für größere Datenübertragungen zu optimieren?
Nein. Was erwartest du denn? Dass die xmlrpclib standardmäßig auf "slow" eingestellt ist, nur um Leute zu ärgern? :twisted:

Re: Fast XML-RPC für Python 2.5

Verfasst: Montag 20. August 2007, 09:29
von Zap
Leonidas hat geschrieben:
Zap hat geschrieben:Gibt es vielleicht Konfigurationsmöglichkeiten um die mitgelieferten xmlrpclib von Python für größere Datenübertragungen zu optimieren?
Nein. Was erwartest du denn? Dass die xmlrpclib standardmäßig auf "slow" eingestellt ist, nur um Leute zu ärgern? :twisted:
:P Ich hatte ehr an sowas Gedacht was vielleicht bei großen Datenmengen von vorteil, im Gegenzug bei "normalen" requests ehr ne Bremse und deshalb standartmäßig nicht aktiv ist (Buffereinstellungen, Blockgrößen oder wasweissich ;) )

Danke schonmal für die ganzen Tipps. Werde mir die Möglichkeiten mal genauer anschauen.

Re: Fast XML-RPC für Python 2.5

Verfasst: Montag 20. August 2007, 11:29
von lunar
Zap hat geschrieben:Ich habe den Server unter Python 2.5 laufen und habe einen Anwendungsfall bei dem u.U. größere Datenmengen (~100MB über ein 100Mbit LAN) übertragen werden müssen. Die Performance ist hinnehmbar, würde sie doch gerne optimieren.
Wenn dir die Performance so wichtig ist, dann solltest du solche Datenmenge direkt über Sockets verschicken, um dir den ganzen Overhead des RPC Protokolls zu sparen. Das geht natürlich zu Lasten des Programmierkomforts, aber das ist nun mal so, wenn man optimieren will.

Verfasst: Montag 20. August 2007, 11:54
von Zap
Ne, das steht nicht zur Diskusion, so einen Aufwand brauche ich da auch nicht betreiben.
Die ganze Sache soll schon weiter über XMLRPC (http) funktionieren.
Sonst hätte ich alternative eh schon ftp oder ähnliches als Ausweichprotokoll verwendet um die Datenübertragung umzusetzen.

Ich werde einfach mal gucken ob ich hier oder da ein paar Prozent rauskitzeln kann. Wenn nicht, ist auch nicht schlimm.

Verfasst: Montag 20. August 2007, 13:55
von Leonidas
Zap hat geschrieben:Ich werde einfach mal gucken ob ich hier oder da ein paar Prozent rauskitzeln kann. Wenn nicht, ist auch nicht schlimm.
Schon py-xmlrpc ausprobiert? Ich wäre in Vergleichswerten gegenüber dem mitgelieferten Server interessiert.

Verfasst: Montag 20. August 2007, 14:52
von Zap
Ne, noch nicht, musste eine andere Arbeit zwischenschieben.
Wenn ich dazu komme reiche ich vergleichswerte nach.

Verfasst: Montag 20. August 2007, 23:09
von ronny
fals nur http zwingend ist, könnte man das xmlrpc weglassen, und die daten als multipart http post message verschicken

Verfasst: Dienstag 21. August 2007, 08:14
von Zap
hätttest du da vielleicht ein Beispiel für mich?

Verfasst: Montag 27. August 2007, 20:08
von Zap
Also cich habe das py-xmlrpc Modul mal ausprobiert und konnte keine Zeitunterschiede fesstellen. Was mich allerdings nicht verwundert hat, da meine Anwendung nicht in die von py-xmlrpc überschriebenen Methoden gelandet ist. Der dort überschriebene als Flinker Geselle versprochene Marshaller blieb Arbeitslos und bekam nichts zu tun.
Das Modul wurde aber erfolgreich in den Programmablauf mit eingebunden, scheint aber nicht 100% kompatibel zu sien.
Naja, ich habe die ganze sache mit Komprimierungen und ähnlichen verbessern können. Das reicht fürs erste.