2013-02-25 94 views
0

Basicly我想运行我的XMLRPC服务器在单独的线程或一起与我的其他代码,然而,server.serve_forever()后,有没有办法,我能得到这个功能后,运行我的另一个代码。似乎server.serve_forever()永远有运行。Python的多线程服务器XMLRPC(?)

self.LocalServer = SimpleThreadedXMLRPCServer(("localhost",10007)) 
self.LocalServer.register_function(getTextA) #just return a string 
self.LocalServer.serve_forever() 
print "I want to continue my code after this..." 
.... another code after this should running together with the server 

我尝试了多线程的概念,但在这里仍然没有运气。 Basicaly我想用我的代码的其余部分一起运行XMLRPC服务器。

谢谢你什么样的帮助。

回答

5

您可以创建一个ServerThread类来封装你的XML-RPC服务器,并在一个线程中运行它:

class ServerThread(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self.localServer = SimpleThreadedXMLRPCServer(("localhost",10007)) 
     self.localServer.register_function(getTextA) #just return a string 

    def run(self): 
     self.localServer.serve_forever() 

你可以使用这个类的方式如下:

server = ServerThread() 
server.start() # The server is now running 
print "I want to continue my code after this..." 
+0

就像一个魅力!非常感谢Xion! – 2013-02-26 19:03:13

+0

如何标记锡安的是回答你的问题的反应? – sizzzzlerz 2013-02-26 21:31:06

1

我想做同样的事情,这就是我的做法。

server = SimpleXMLRPCServer(('127.0.0.1', 9000), logRequests=True, allow_none=True) 
server.register_instance(ServerTrial()) 
server.register_introspection_functions() 
server.register_multicall_functions() 
server_thread = threading.Thread(target=server.serve_forever) 
server_thread.start() 
print'This will be printed'