__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)

posted on 2016-08-08 15:51  wolover  阅读(174)  评论(0编辑  收藏  举报