def run(self): # Multiple RPCService instances can be run in a single process # via Greenlets (Gevent cooperative multitasking) Context, _ = get_zmq_classes(env='gevent') context = Context() # Custom serializer/deserializer functions can be passed in. The server # side ones must match. echo = EchoService(context=context, serializer=JSONSerializer()) echo.connect('ipc:///tmp/rpc-demo-echo.service') # We create two Math services to simulate load balancing. A client can # connect to both of these services and requests will be load balanced. math1 = MathService(context=context) math1.connect('ipc:///tmp/rpc-demo-math1.service') math2 = MathService(context=context) math2.connect('ipc:///tmp/rpc-demo-math2.service') # Next we spawn service greenlets and wait for them to exit joinall([ echo.start(), math1.start(), math2.start(), ])
def setUp(self): green_env = 'eventlet' Context, _ = get_zmq_classes(env=green_env) self.context = Context() self.client = GreenRPCClient(context=self.context, green_env=green_env) self.service = GreenRPCService(context=self.context, green_env=green_env) super(EventletBase, self).setUp()
def setUp(self): Context, _ = get_zmq_classes() self.context = Context() self.pool = ThreadPool(24) self.client = SyncRPCClient(context=self.context) self.service = ThreadingRPCService(context=self.context, pool=self.pool) super(SyncBase, self).setUp()
def setUp(self): env = 'greenhouse' Context, _ = get_zmq_classes(env) self.tools = get_tools(env) self.context = Context() self.executor = self.tools.Executor(24) self.client = GreenRPCClient(context=self.context, green_env=env, executor=self.executor) self.service = GreenRPCService(context=self.context, green_env=env, executor=self.executor) super(GreenhouseBase, self).setUp()
def setUp(self): env = None Context, _ = get_zmq_classes(env) self.tools = get_tools(env) self.context = Context() self.executor = self.tools.Executor(12) self.client = SyncRPCClient(context=self.context) self.service = ThreadingRPCService(context=self.context, executor=self.executor) super(SyncBase, self).setUp()
def setUp(self): env = None Context, _ = get_zmq_classes(env) self.tools = get_tools(env) self.context = Context() self.executor = self.tools.Executor(12) #from concurrent.futures import ThreadPoolExecutor #self.executor = ThreadPoolExecutor(12) self.client = ThreadingRPCClient(context=self.context, executor=self.executor) self.service = ThreadingRPCService(context=self.context, executor=self.executor) super(ThreadingBase, self).setUp()
joinall([ echo.start(), math1.start(), math2.start(), ]) def start(self): start_process(self.run) if __name__ == '__main__': workers = [Worker() for _ in range(cpu_count())] for w in workers: w.start() Context, Poller = get_zmq_classes(env='gevent') context = Context() echo_inp = context.socket(ROUTER) math1_inp = context.socket(ROUTER) math2_inp = context.socket(ROUTER) echo_out = context.socket(DEALER) math1_out = context.socket(DEALER) math2_out = context.socket(DEALER) echo_inp .bind('tcp://127.0.0.1:5555') math1_inp .bind('tcp://127.0.0.1:5556') math2_inp .bind('tcp://127.0.0.1:5557') echo_out .bind('ipc:///tmp/rpc-demo-echo.service')
math1.start(), math2.start(), ] for service in services: service.wait() if __name__ == '__main__': from netcall.utils import setup_logger setup_logger() workers = [Worker() for _ in range(cpu_count())] for w in workers: w.start() Context, _ = get_zmq_classes(env='eventlet') context = Context() echo_inp = context.socket(ROUTER) math1_inp = context.socket(ROUTER) math2_inp = context.socket(ROUTER) echo_out = context.socket(DEALER) math1_out = context.socket(DEALER) math2_out = context.socket(DEALER) echo_inp .bind('tcp://127.0.0.1:5555') math1_inp .bind('tcp://127.0.0.1:5556') math2_inp .bind('tcp://127.0.0.1:5557') echo_out .bind('ipc:///tmp/rpc-demo-echo.service')