我正在寻找一种方法来阻止多个主机同时向Python XMLRPC侦听器发出命令。侦听器负责运行脚本以在该系统上执行任务,如果多个用户同时尝试发出这些命令,则会失败。有没有办法可以阻止所有传入的请求,直到单个实例完成?
答案 0 :(得分:15)
我认为python SimpleXMLRPCServer模块就是你想要的。我相信该模型的默认行为是在处理当前请求时阻止新请求。默认行为给了我很多麻烦,我通过在ThreadingMixIn类中混合改变了这种行为,这样我的xmlrpc服务器就可以在同一时间内响应多个请求。
class RPCThreading(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
pass
如果我正确理解您的问题,SimpleXMLRPCServer就是解决方案。直接使用它。
答案 1 :(得分:0)
你能有另一个沟通渠道吗?如果是的话,那么在服务器和客户端之间运行时会有一个“在轮到我时给我回电话”。
换句话说,每个客户端都会注册其向服务器发出请求的意图,并且所述服务器将在准备就绪时“回调”下一个客户端。
答案 2 :(得分:0)
有几种选择:
SimpleXMLRPCServer
之类的单进程单线程服务器随后处理请求。threading.Lock()
。lockfile
模块或mysql中的GET_LOCK()
函数)。