Dieser Thread ist ja schon etwas älter, aber vom Thema passt es ganz gut
also wollte ich nicht neu posten.
Folgenden Code habe ich mir für meine Zwecke zusammengeklaut

Mein Problem:
Wie kann ich den Server vom Client aus beenden? oder wie kann ich
überhaupt ein Programmabbruch bewirken (außer mit ctrl-c)?
Habe es mit exit(0) oder raise keyboardinterrupt versucht allerdings
werden diese Ausnahmen dann beim Clientprogramm ausgelöst.
Code: Alles auswählen
#!/usr/bin/env python
import SimpleXMLRPCServer
from os import popen
from sys import exit
class KerioFunctions:
def __init__(self):
import string
self.python_string = string
def exe_xbmc(self, rs_cmd):
"""
representing the actual interface
"""
if rs_cmd == ("vol"): #test
xbmc.executebuiltin("xbmc.setvolume(70)")
return "You sent: %s" %rs_cmd
class StoppableXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
"""
Overwritten XMLRPC-Server class, since the original one cannot be stopped cleanly.
catching the KeyboardInterruptException will shutdown the server.
Here, we're shutting down at any exception to free the socket again.
"""
allow_reuse_address = True
def serve_forever(self):
self.stop = False
while not self.stop:
try:
self.handle_request()
except:
self.server_close()
print "server closed"
exit(0)
server = StoppableXMLRPCServer(("localhost",50505))
server.register_instance(KerioFunctions())
server.serve_forever()
Edit by Gerold: Ich habe daraus ein neues Thema gemacht.