Python多线程XMLRPC服务器(?)

时间:2013-02-25 19:00:46

标签: python multithreading simplexmlrpcserver

基本上我想在单独的线程中运行我的xmlrpc服务器或者与我的其他代码一起运行,但是,在server.serve_forever()之后,我无法在此函数之后运行另一个代码。似乎server.serve_forever()永远在那里运行。

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服务器。

感谢您的帮助。

2 个答案:

答案 0 :(得分:7)

您可以创建一个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..."

答案 1 :(得分: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'