python多线程:Python 多线程XML-RPC的实现来源: 发布时间:星期四, 2009年2月12日 浏览:89次 评论:0
、 引言 用PythonSimpleXMLRPCServer实现XML-RPC服务器只能是单线程个个处理请求对于操作中耗时较长操作会阻塞其他用户请求使服务质量下降因此有没有办法让SimpleXMLRPCServer成为多线程服务器呢? 主要有两种实现思路方法:修改SimpleXMLRPCServer实现代码用ThreadingMixIn或 ForkingMixIn 2、 修改SimpleXMLRPCServer实现代码 SimpleXMLRPCServer实现如下: SimpleXMLRPCServer(SocketServer.TCPServer, SimpleXMLRPCDispatcher): 如果我们将其继承SocketServer.TCPServer,改为支持线程处理ThreadingTCPServer即可将SimpleXMLRPCServer变成多线程服务器如下: SimpleXMLRPCServer(SocketServer.ThreadingTCPServer, SimpleXMLRPCDispatcher): 3、 用ThreadingMixIn实现 SocketServer模块中就支持对线程(Threading)或进程(Fork)支持典型代码如下: import SimpleXMLRPCServer,SocketServer import win32api,thread #The server object Server: count=0 def __init__(self): pass def echoString(self, strs): mutex.acquire #用mutex锁住数据 Server.count1 #更改静态数据 t=time.strftime(\"Serve at %I:%M:%S Id is \")+str(Server.count) pr \"Serve Id \"+str(Server.count) mutex.release#释放锁 #win32api.Sleep(20000) t #多线程实现 RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer): pass global mutex mutex =thread.allocate_lock server_object = Server server = RPCThreading((\"localhost\", 8888)) server.register_instance(server_object) [Page] #Go o the listener loop pr \"Listening on 8888\" server.serve_forever 通过上面代码也可以实现XML-RPC多线程支持而不用修改Python SimpleXMLRPCServer库 0
相关文章读者评论发表评论 |