.. api joint api ######### Server side =========== gevent ------ .. rubric:: Easiest server with blocking loop .. code-block:: python from joint import GeventServer class Obj(object): def mult(self, i): return i * 2 srv = GeventServer(bind=('', port=12345)) srv.mount('', Obj()) srv.loop() .. rubric:: Controlled event loop .. code-block:: python import gevent from joint import GeventServer srv = GeventServer(bind=('', 12345)) srv.mount('mult', lambda i: i * 2) grn = gevent.spawn(srv.loop) # Once you want to stop loop and wait all pending requests srv.stop() grn.join() .. rubric:: External event loop .. code-block:: python import zeromq from joint import Dispatcher sck = zeromq.Context().socket(zmq.ZMQ_REP) dsp = Dispatcher() while True: res = dsp.dispatch(sck.recv()) if res is not None: sck.send(res) Client side =========== gevent ------ .. code-block:: python from joint import GeventClient, RPC cli = GeventClient(('localhost', 12345)) cliobj = RPC(cli) assert cli.call('mult', 2) == cliobj.mult(2) == 4 cli = GeventClient(('localhost', 12345)) assert cli.call('mult', 2) == 4 cli = GeventClient(('localhost', 12345)) cli.ping() # Will force connection here assert cli.call('mult', 3) == 9 assert cli.list() == ('mult', ) cli.setWizardMode(True) assert cli.mult(4) == 16 cli.magic