python 多线程 XML RPC的实现

这篇博客介绍了如何在Python中通过继承ThreadMixIn实现多线程的SimpleXMLRPCServer。服务器端代码创建了一个Server类,其中的ServeMe方法使用了互斥锁来保护共享数据。客户端通过ServerProxy调用服务器的方法。博客强调了在处理共享数据时需要加锁以确保线程安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 中的SimpleXMLRPCServer只能支持单线程访问对象.如果想使用多线程的 SimpleXMLRPCServer.最好的办法就是继承ThreadMixIn.简单吧:)下面是代码

服务器端代码
#  -*- Python -*- 
#
 
#
 server.py - 
#
 
#
  Copyright (C) 2007 Leo Chen (hide1713@gmail.com) 
#
 
#
 $Locker:  $
#
 $Log: header.el,v $Revision 1.1  2001/02/01 20:15:57  lasse
#
 Author          : Leo Chen
#
 Created On      : Sat Jun 16 10:10:28 2007
#
 Last Modified By: Leo Chen
#
 Last Modified On: Sat Jun 16 10:10:38 2007
#
 Update Count    : 1
#
 
#
 HISTORY
#
 
#
-*- coding: cp936 -*-
import  SimpleXMLRPCServer,SocketServer
import time,thread


#The server object

class Server:
    count
=0
    
def __init__(self):
        
pass
    
    
def ServeMe(self):
        mutex.acquire() 
#用mutex锁住数据
        Server.count+=1 #更改静态数据
        t=time.strftime("Serve at %I:%M:%S Id is ")+str(Server.count)
        
print "Serve Id "+str(Server.count)
        mutex.release()
#释放锁
        time.sleep(10)
        
        
return t

#多线程实现
class RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
    
pass

global mutex
mutex 
=thread.allocate_lock()

server_object 
= Server()

server 
= RPCThreading(("localhost"8888))

server.register_instance(server_object)



#Go into the main listener loop

print "Listening"


server.serve_forever()



客户端代码
#  -*- Python -*- 

# client.py 
- 

#  Copyright (C) 
2007 Leo Chen (hide1713@gmail.com) 

# $Locker:  $
# $Log: header.el,v $Revision 
1.1  2001/02/01 20:15:57  lasse
# Author          : Leo Chen
# Created On      : Sat Jun 
16 10:10:56 2007
# Last Modified By: Leo Chen
# Last Modified On: Sat Jun 
16 10:10:57 2007
# Update Count    : 
1

# HISTORY

import xmlrpclib



server 
= xmlrpclib.ServerProxy("http://localhost:8888")



id 
= server.ServeMe()

print id


注意.如果有共享数据.操作时要加锁.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值