Python thrift rpc TProcessPoolServer 原生的多进程服务模式

以前通过多线程每个线程中再启进程的模式实现了多进程的服务模式。
今天发现其实进程池的模型是自带的。
这个Server在一个单独的文件中,与其它Server不在一起,不看代码不太容易发现。

示例代码

import sys, glob  
sys.path.append('./gen-py')

from WormHoleRPCService import WormHoleRPCService 
from WormHoleRPCService.ttypes import *  


from thrift.transport import TSocket  
from thrift.transport import TTransport  
from thrift.protocol import TBinaryProtocol  
from thrift.server import TProcessPoolServer  


from time import sleep
import multiprocessing


def work_hi(pipe) :
    pass

def work_add(pipe ,  a , b) :
    pass

def work_getMap(a) :
    pass


def work_getList(a , b , c , d) :
    pass
    i = 0
    while True :
        i += 1 ;
        if i > 30000000 :
            break
    res = [{a : 'tom' , b:'jim'} , {c : 'john' , d:'kobe'} ]
    return res



class WormHoleRPCServiceHandler:  
  def __init__(self):  
    self.log = {}  

  def hi(self):  
    print 'hi'

  def add(self , a , b) :
    return a + b 


  def getList(self , a , b , c , d) :
    return work_getList(a , b , c , d)


  def getMap(self , a ) :
    return a



rpc_handler = WormHoleRPCServiceHandler()  
processor = WormHoleRPCService.Processor(rpc_handler)  
transport = TSocket.TServerSocket(port=9090)  
tfactory = TTransport.TBufferedTransportFactory()  
pfactory = TBinaryProtocol.TBinaryProtocolFactory()  

# You could do one of these for a multithreaded server  
server = TProcessPoolServer.TProcessPoolServer(processor, transport, tfactory, pfactory)  

print 'Starting the server...'  
server.setNumWorkers(5)
server.serve()  
print 'done.'  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值