4

基本的に、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

マルチスレッドの概念を試しましたが、それでもここではうまくいきません。基本的に、残りのコードと一緒にxmlrpcサーバーを実行したいと思います。

よろしくお願いします。

4

2 に答える 2

9

ServerThreadXML-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..."
于 2013-02-25T21:00:56.697 に答える
2

私はあなたと同じことをしたいと思っていました。これが私のやり方です。

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'
于 2013-03-13T14:01:27.937 に答える