Python thrift rpc TProcessPoolServer 原生的多进程服务模式
2017-11-17 11:18
4423 查看
以前通过多线程每个线程中再启进程的模式实现了多进程的服务模式。
今天发现其实进程池的模型是自带的。
这个Server在一个单独的文件中,与其它Server不在一起,不看代码不太容易发现。
今天发现其实进程池的模型是自带的。
这个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.'
相关文章推荐
- 使用python xml-rpc client & server 来提供metaweblog服务
- python:Process、join()、进程的创建Process子类、进程池Pool、将一个文件夹的内容copy到另一个文件夹
- python:Process、join()、进程的创建Process子类、进程池Pool、将一个文件夹的内容copy到另一个文件夹
- python 简单搭建非阻塞式单进程,select模式,epoll模式服务
- python的multiprocessing模块进程创建、资源回收-Process,Pool
- 调试进程外服务(Debugging Out-Of-Process Server)
- Thrift 多线程阻塞式IO服务模型-TThreadPoolServer
- python thrift两种服务模式对比
- Python进程处理之subprocess
- Python使用TCPServer编写(多线程)Socket服务
- Python使用TCPServer编写(多线程)Socket服务
- 理解Python进程Process
- Python IDLE模式下采用multiprocessing 子进程无法输出
- 使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务(DR模式
- python uiautomator 源码学习(三) josonRPCServer-DUT Side
- python学习第十课 多路复用、ThreadingTCPServer、线程与进程
- python 的SimpleXMLRPCServer,xmlrpclib
- zabbix使用zabbix_java_gateway 监控java应用进程 主动模式 python脚本
- Python创建进程1-Process方法实现
- Python生成进程方法2-Pool