__author__ = 'Administrator'
from twisted.web import xmlrpc,server
from twisted.internet import reactor
from twisted.internet.threads import deferToThread
from twisted.internet.defer import inlineCallbacks,returnValue
import happybase,json
reactor.suggestThreadPoolSize(30)
iorpc= xmlrpc.Proxy("http://127.0.0.1:8014",allowNone=True)
class HbaseRPC(xmlrpc.XMLRPC):
@inlineCallbacks
def xmlrpc_get(self,key):
key=key.strip()
value=yield iorpc.callRemote("get",key)
returnValue(json.dumps(value))
hbase_rpc=HbaseRPC()
reactor.listenTCP(8013,server.Site(hbase_rpc))
reactor.run()
xmlrpc服务器:
from config import *
from twisted.internet import reactor
from twisted.web import xmlrpc,server
from twisted.internet import defer,threads
import time
from twisted.application import service,internet
import datetime
from twisted.internet.task import LoopingCall
class IpOperateRPC(xmlrpc.XMLRPC):
def xmlrpc_add(self,ip):
operate_queue.put(ip+":add")
return True
def xmlrpc_remove(self,ip):
operate_queue.put(ip+":remove")
return True
web_service=IpOperateRPC(allow_none=True) #allow_none默认为False,指定为true之后,代表,xmlrpc服务会吧None包装进xml文件中传输到客户端
web_factory=server.Site(web_service) #生成一个factory对象
xmlrpc_service=internet.TCPServer(PORT,web_factory)
reactor.callInThread(operate_fun,operate_queue,Operate())
application=service.Application("DenyServer")
xmlrpc_service.setServiceParent(application)