class GeventServer(StreamServer): def __init__(self, processor, *args, **kwargs): self.processor = processor self.transport_factory = TBufferedTransportFactory() self.protocol_factory = THeaderProtocolFactory() super(GeventServer, self).__init__(*args, **kwargs) def serve_forever(self, stop_timeout=None): signal.signal(signal.SIGINT, lambda sig, frame: self.stop()) signal.signal(signal.SIGTERM, lambda sig, frame: self.stop()) super(GeventServer, self).serve_forever(stop_timeout=stop_timeout) def handle(self, client_socket, address): client = TSocket() client.setHandle(client_socket) itrans = self.transport_factory.getTransport(client) iprot = self.protocol_factory.getProtocol(itrans) otrans = self.transport_factory.getTransport(client) oprot = self.protocol_factory.getProtocol(otrans) server_context = TRpcConnectionContext(client, iprot, oprot) try: while self.started: self.processor.process(iprot, oprot, server_context) except TTransportException: pass finally: itrans.close() otrans.close()
def __init__(self, processor, *args, **kwargs): self.processor = processor self.transport_factory = TBufferedTransportFactory() self.protocol_factory = THeaderProtocolFactory( # allow non-headerprotocol clients to talk with us client_types=[ THeaderTransport.HEADERS_CLIENT_TYPE, THeaderTransport.FRAMED_DEPRECATED, THeaderTransport.UNFRAMED_DEPRECATED, ], ) super(GeventServer, self).__init__(*args, **kwargs)
class GeventServer(StreamServer): def __init__(self, processor, *args, **kwargs): self.processor = processor self.transport_factory = TBufferedTransportFactory() self.protocol_factory = THeaderProtocolFactory( # allow non-headerprotocol clients to talk with us client_types=[ THeaderTransport.HEADERS_CLIENT_TYPE, THeaderTransport.FRAMED_DEPRECATED, THeaderTransport.UNFRAMED_DEPRECATED, ], ) super(GeventServer, self).__init__(*args, **kwargs) def serve_forever(self, stop_timeout=None): signal.signal(signal.SIGINT, lambda sig, frame: self.stop()) signal.signal(signal.SIGTERM, lambda sig, frame: self.stop()) super(GeventServer, self).serve_forever(stop_timeout=stop_timeout) # pylint: disable=method-hidden def handle(self, client_socket, _): client = TSocket() client.setHandle(client_socket) itrans = self.transport_factory.getTransport(client) iprot = self.protocol_factory.getProtocol(itrans) otrans = self.transport_factory.getTransport(client) oprot = self.protocol_factory.getProtocol(otrans) server_context = TRpcConnectionContext(client, iprot, oprot) try: while self.started: self.processor.process(iprot, oprot, server_context) except TTransportException: pass finally: itrans.close() otrans.close()
TMessageType, ) if six.PY3: import asyncio else: # pyre-fixme[21]: Could not find module `trollius`. import trollius as asyncio # We support the deprecated FRAMED transport for old fb303 # clients that were otherwise failing miserably. THEADER_CLIENT_TYPES = { CLIENT_TYPE.HEADER, CLIENT_TYPE.FRAMED_DEPRECATED, } _default_thpfactory = THeaderProtocolFactory(client_types=THEADER_CLIENT_TYPES) THeaderProtocol = _default_thpfactory.getProtocol logger = logging.getLogger(__name__) if six.PY2: class PermissionError(IOError): pass class ResourceWarning(RuntimeWarning): pass class TReadOnlyBuffer(TTransportBase): """Leaner version of TMemoryBuffer that is resettable."""
def connection_made(self, transport): self.transport = transport self.client = self._client_class(SenderTransport(self.transport), WrappedTransportFactory(), THeaderProtocolFactory())
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()
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, \ [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') 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.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 == "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 __init__(self, processor, *args, **kwargs): self.processor = processor self.transport_factory = TBufferedTransportFactory() self.protocol_factory = THeaderProtocolFactory() super(GeventServer, self).__init__(*args, **kwargs)
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, [ 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') 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()