dankegut hat geschrieben:
ist die API Semi-stable und die Handler sind nicht gut oder wenn überhaupt nicht dokumentiert, das ist schon fast n Grund, dass nicht zu benutzen.
das ist sicherlich ein Thema und immer wieder Gegenstand von Diskussionen auf der twisted ml, irgendwo halt auch ein Henne/Ei Problem, bei mehr Nutzern wird die Dokumentation besser, interessierte Nutzer werden aber von der u.U. nicht Ihren Vorstellungen entsprechenden Dokumentation abgeschreckt.
dankegut hat geschrieben:Hast du da vielleicht schon was fertiges, also einen einfachen RequestHandler, bis jetzt hab ich das mit SimpleXMLRPCServer gut hinbekommen.
Ich will Dich in keinster Weise von der Sache mit dem SimpleXMLRPCServer abbringen oder diesen abwerten. Ich fand nur das Ergebnis Deiner Überlegungen Dein Problem mit twisted zu lösen schade und kommentierungswürdig, auch wenn es natürlich seine Gründe in den oben angeführten hat.
Was Fertiges? Ich will doch nicht Deine Applikation schreiben.

Denn viel mehr braucht es aber auch nicht:
Code: Alles auswählen
from twisted.web import server
from twisted.web import xmlrpc
from twisted.internet import reactor
class KeyServer:
def __init__(self):
self.keys = {}
def store( self, key, item):
self.keys.update({key:item})
print self.keys
def retreive( self, key):
try:
return self.keys[key]
except:
return 'no such item'
def remove( self, key):
pass
class XMLRPC(xmlrpc.XMLRPC):
def __init__(self, keys):
xmlrpc.XMLRPC.__init__(self)
self.keys = keys
def xmlrpc_store(self, key, item):
self.keys.store(key, item)
return "Ok"
def xmlrpc_retreive(self, key):
return self.keys.retreive(key)
def xmlrpc_ping(self):
print "ping"
return "Ok"
if __name__ == '__main__':
keys = KeyServer()
reactor.listenTCP(12345, server.Site(XMLRPC(keys)))
reactor.run()
Ob man nur für sowas Twisted verwenden muß, sei mal dahingestellt. Richtig interessant wird es aber, wenn Du
keys z.B. noch über SOAP ansprechen willst und über eine html-Seite Dir den aktuellen Inhalt ansehen möchtest, oder ... - wirf vielleicht nochmals einen Blick in das
Finger-Tutorial.
Ciao,
dev