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.
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!!