def create_server(): processor = ThriftTest.Processor(TestHandler()) server = TCppServer.TCppServer(processor) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('0.0.0.0', 0)) port = sock.getsockname()[1] server.setPort(port) t = Thread(name="test_tcpp_server", target=server.serve) t.setDaemon(True) t.start() return (server, port)
def main(): op = optparse.OptionParser(usage='%prog [options]', add_help_option=False) op.add_option('-p', '--port', action='store', type='int', dest='port', default=1234, help='The server port') op.add_option('-s', '--servertype', action='store', type='string', dest='servertype', default='TNonblockingServer', help='Type name of server') op.add_option('-w', '--num_workers', action='store', type='int', dest='workers', default=4, help='Number of worker processes/threads') op.add_option('-Q', '--max_queue_size', action='store', type='int', dest='max_queue_size', default=0, help='Max queue size, passed to TNonblockingServer') op.add_option('-h', '--header', action='store_true', help='Use the generated ContextIface') op.add_option('-?', '--help', action='help', help='Show this help message and exit') (options, args) = op.parse_args() if args: op.error('trailing arguments: ' + ' '.join(args)) handler = LoadHandler() processor = LoadTest.Processor(handler) if options.header: pfactory = THeaderProtocolFactory(True, [ CLIENT_TYPE.HEADER, CLIENT_TYPE.FRAMED_DEPRECATED, CLIENT_TYPE.UNFRAMED_DEPRECATED, CLIENT_TYPE.HTTP_SERVER ]) if options.servertype == 'TCppServer': print('C++ ThriftServer, Header transport, backwards compatible ' 'with all other types') elif options.servertype == 'TNonblockingServer': print('Header transport, backwards compatible with framed') else: print('Header transport, backwards compatible with ' + 'unframed, framed, http') else: if options.servertype == 'TCppServer': if not options.header: op.error('TCppServer cannot be used without header') elif options.servertype == 'TNonblockingServer': print('Framed transport') else: print('Unframed transport') pfactory = TBinaryProtocolAcceleratedFactory() if options.servertype == 'TCppServer': server = TCppServer.TCppServer(processor) server.setPort(options.port) print('Worker threads: ' + str(options.workers)) server.setNumIOWorkerThreads(options.workers) else: transport = TSocket.TServerSocket(options.port) tfactory = TTransport.TBufferedTransportFactory() if options.servertype == "TNonblockingServer": server = TNonblockingServer.TNonblockingServer( processor, transport, pfactory, maxQueueSize=options.max_queue_size) elif options.servertype == "TProcessPoolServer": server = TProcessPoolServer.TProcessPoolServer( processor, transport, tfactory, pfactory) print('Worker processes: ' + str(options.workers)) server.setNumWorkers(options.workers) else: ServerClass = getattr(TServer, options.servertype) server = ServerClass(processor, transport, tfactory, pfactory) print('Serving ' + options.servertype + ' requests on port %d...' % (options.port, )) server.serve()
processor = ThriftTest.ContextProcessor( TestContextHandler(options.port)) else: processor = ThriftTest.Processor(TestHandler()) if options.multiple: processor = TMultiplexedProcessor.TMultiplexedProcessor() if options.context: processor.registerProcessor( "ThriftTest", ThriftTest.ContextProcessor(TestContextHandler(options.port))) processor.registerProcessor( "SecondService", SecondService.ContextProcessor(SecondContextHandler())) else: processor.registerProcessor("ThriftTest", ThriftTest.Processor(TestHandler())) processor.registerProcessor( "SecondService", SecondService.Processor(SecondHandler())) server = TCppServer.TCppServer(processor) server.setPort(options.port) if options.header: server.processor.setEventHandler(HeaderEventHandler()) elif options.context: server.processor.setEventHandler(ContextEventHandler()) server.setServerEventHandler(event_handler) server.serve()
def main(): op = optparse.OptionParser(usage='%prog [options]', add_help_option=False) op.add_option('-p', '--port', action='store', type='int', dest='port', default=1234, help='The server port') op.add_option('-s', '--servertype', action='store', type='string', dest='servertype', default='TGeventServer', help='Type name of server') op.add_option('-w', '--num_workers', action='store', type='int', dest='workers', default=4, help='Number of worker processes/threads') op.add_option('-Q', '--max_queue_size', action='store', type='int', dest='max_queue_size', default=0, help='Max queue size, passed to TNonblockingServer') op.add_option('-h', '--header', action='store_true', help='Use the generated ContextIface') op.add_option('-?', '--help', action='help', help='Show this help message and exit') (options, args) = op.parse_args() if args: op.error('trailing arguments: ' + ' '.join(args)) handler = LoadHandler() if options.servertype == 'TGeventServer': # only import TGeventServer when necessary. TGeventServer calls # monkey_patch, which breaks other servers from apache.thrift.test.sync_load_handler import GeventLoadHandler from thrift.server import TGeventServer handler = GeventLoadHandler() processor = LoadTest.Processor(handler) if options.header: pfactory = THeaderProtocolFactory(True, \ [THeaderTransport.HEADERS_CLIENT_TYPE, THeaderTransport.FRAMED_DEPRECATED, THeaderTransport.UNFRAMED_DEPRECATED, THeaderTransport.HTTP_CLIENT_TYPE]) if options.servertype == 'TCppServer': print 'C++ ThriftServer, Header transport, backwards compatible ' \ 'with all other types' elif options.servertype == 'TNonblockingServer': print 'Header transport, backwards compatible with framed' else: print 'Header transport, backwards compatible with ' + \ 'unframed, framed, http' else: if options.servertype == 'TCppServer': if not options.header: op.error('TCppServer cannot be used without header') if options.servertype == 'TNonblockingServer': print 'Framed transport' else: print 'Unframed transport' pfactory = TBinaryProtocolAcceleratedFactory() if options.servertype == 'TCppServer': server = TCppServer.TCppServer(processor) server.setPort(options.port) print 'Worker threads: ' + str(options.workers) server.setNWorkerThreads(options.workers) else: transport = TSocket.TServerSocket(options.port) tfactory = TTransport.TBufferedTransportFactory() if options.servertype == "TNonblockingServer": server = TNonblockingServer.TNonblockingServer(processor, transport, pfactory, maxQueueSize=options.max_queue_size) elif options.servertype == "TProcessPoolServer": server = TProcessPoolServer.TProcessPoolServer(processor, transport, tfactory, pfactory) print 'Worker processes: ' + str(options.workers) server.setNumWorkers(options.workers) elif options.servertype == "TGeventServer": print 'Worker processes: ' + str(options.workers) # Gevent makes its own server transport. server = TGeventServer.TGeventServer(options.port, processor, None, tfactory, pfactory) server.setNumWorkers(options.workers) else: ServerClass = getattr(TServer, options.servertype) server = ServerClass(processor, transport, tfactory, pfactory) print 'Serving ' + options.servertype + \ ' requests on port %d...' % (options.port,) server.serve()
def main(): op = optparse.OptionParser(usage="%prog [options]", add_help_option=False) op.add_option( "-p", "--port", action="store", type="int", dest="port", default=1234, help="The server port", ) op.add_option( "-s", "--servertype", action="store", type="string", dest="servertype", default="TCppServer", help="Type name of server", ) op.add_option( "-w", "--num_workers", action="store", type="int", dest="workers", default=4, help="Number of worker processes/threads", ) op.add_option( "-h", "--header", action="store_true", default=True, help="Use the generated ContextIface", ) op.add_option("-?", "--help", action="help", help="Show this help message and exit") (options, args) = op.parse_args() if args: op.error("trailing arguments: " + " ".join(args)) handler = LoadHandler() processor = LoadTest.Processor(handler) if options.header: pfactory = THeaderProtocolFactory( True, [ CLIENT_TYPE.HEADER, CLIENT_TYPE.FRAMED_DEPRECATED, CLIENT_TYPE.UNFRAMED_DEPRECATED, CLIENT_TYPE.HTTP_SERVER, ], ) if options.servertype == "TCppServer": print("C++ ThriftServer, Header transport, backwards compatible " "with all other types") else: print("Header transport, backwards compatible with " + "unframed, framed, http") else: if options.servertype == "TCppServer": if not options.header: op.error("TCppServer cannot be used without header") else: print("Unframed transport") pfactory = TBinaryProtocolAcceleratedFactory() if options.servertype == "TCppServer": server = TCppServer.TCppServer(processor) server.setPort(options.port) print("Worker threads: " + str(options.workers)) server.setNumIOWorkerThreads(options.workers) else: transport = TSocket.TServerSocket(options.port) tfactory = TTransport.TBufferedTransportFactory() ServerClass = getattr(TServer, options.servertype) server = ServerClass(processor, transport, tfactory, pfactory) print("Serving " + options.servertype + " requests on port %d..." % (options.port, )) server.serve()