Seite 1 von 1

Verfasst: Montag 16. April 2007, 17:49
von dolle
Da der XMLRPC-Dienst so ausgezeichnet läuft bekommt er mittlerweile immer mehr Funktionen dazu. :D Ich habe deshalb versucht das ganze in verschiedene Module und Klassen aufzuplitten um die Übersicht zu behalten.
Leider habe ich erst jetzt bemerkt dass man mit "register_instance" nur eine Klasse registrieren kann. Nach lange hin und herprobieren habe ich aber trotzdem keine Lösung gefunden. :(

Gibt es einen Workaround für dieses Problem oder bin ich gezwungen nur mit einer einizgen Klasse zu arbeiten?

bye
Robert

Verfasst: Montag 16. April 2007, 18:53
von gerold
Edit: Ich habe ein eigenes Thema daraus gemacht, da die Frage nichts mit Windows-Diensten zu tun hat.

Verfasst: Montag 16. April 2007, 19:03
von gerold
Du könntest z.B. mit vererbten Klassen arbeiten, so dass im Endeffekt wieder nur eine Klasse, die von den anderen Klassen die Methoden geerbt hat an den XMLRPC-Server übergeben wird.

server.py:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

from SimpleXMLRPCServer import SimpleXMLRPCServer

class XmlrpcHandler1(object):
    def get_hallo(self):
        return "Hallo"

class XmlrpcHandler2(object):
    def get_welt(self):
        return "Welt"

class XmlrpcHandlerAll(XmlrpcHandler1, XmlrpcHandler2):
    pass

server = SimpleXMLRPCServer(("localhost", 50505))
server.register_instance(XmlrpcHandlerAll())

print "Der XMLRPC-Server horcht auf http://localhost:50505."
print "Er kann mit STRG+C oder STRG+Pause beendet werden."
server.serve_forever()
client.py:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import socket
socket.setdefaulttimeout(3) # Timeout auf 3 sec. setzen
import xmlrpclib

server = xmlrpclib.ServerProxy("http://localhost:50505")
print server.get_hallo(), 
print server.get_welt()
mfg
Gerold
:-)

Verfasst: Dienstag 17. April 2007, 10:09
von dolle
Das funktioniert perfekt!! Danke für die Hilfe.
Python rocks!!