fugue.rpc#

fugue.rpc.base#

class fugue.rpc.base.EmptyRPCHandler[source]#

Bases: RPCHandler

The class representing empty RPCHandler

class fugue.rpc.base.NativeRPCClient(server, key)[source]#

Bases: RPCClient

Native RPC Client that can only be used locally. Use make_client() to create this instance.

Parameters
class fugue.rpc.base.NativeRPCServer(conf)[source]#

Bases: RPCServer

Native RPC Server that can only be used locally.

Parameters

conf (Any) – the Fugue Configuration Tutorial

make_client(handler)[source]#

Add handler and correspondent NativeRPCClient

Parameters

handler (Any) – RPChandler like object

Returns

the native RPC client

Return type

RPCClient

start_server()[source]#

Do nothing

Return type

None

stop_server()[source]#

Do nothing

Return type

None

class fugue.rpc.base.RPCClient[source]#

Bases: object

RPC client interface

class fugue.rpc.base.RPCFunc(func)[source]#

Bases: RPCHandler

RPCHandler wrapping a python function.

Parameters

func (Callable) – a python function

class fugue.rpc.base.RPCHandler[source]#

Bases: RPCClient

RPC handler hosting the real logic on driver side

property running: bool#

Whether the handler is in running state

start()[source]#

Start the handler, wrapping start_handler()

Returns

the instance itself

Return type

RPCHandler

start_handler()[source]#

User implementation of starting the handler

Return type

None

stop()[source]#

Stop the handler, wrapping stop_handler()

Return type

None

stop_handler()[source]#

User implementation of stopping the handler

Return type

None

class fugue.rpc.base.RPCServer(conf)[source]#

Bases: RPCHandler, ABC

Server abstract class hosting multiple RPCHandler.

Parameters

conf (Any) – the Fugue Configuration Tutorial

property conf: ParamDict#

Config initialized this instance

invoke(key, *args, **kwargs)[source]#

Invoke the correspondent handler

Parameters
  • key (str) – key of the handler

  • args (Any) –

  • kwargs (Any) –

Returns

the return value of the handler

Return type

Any

abstract make_client(handler)[source]#

Make a RPCHandler and return the correspondent RPCClient

Parameters

handler (Any) – RPChandler like object

Returns

the client connecting to the handler

Return type

RPCClient

register(handler)[source]#

Register the hander into the server

Parameters

handler (Any) – RPChandler like object

Returns

the unique key of the handler

Return type

str

start_handler()[source]#

Wrapper to start the server, do not override or call directly

Return type

None

abstract start_server()[source]#

User implementation of starting the server

Return type

None

stop_handler()[source]#

Wrapper to stop the server, do not override or call directly

Return type

None

abstract stop_server()[source]#

User implementation of stopping the server

Return type

None

fugue.rpc.base.make_rpc_server(conf)[source]#

Make RPCServer based on configuration. If ‘fugue.rpc.server` is set, then the value will be used as the server type for the initialization. Otherwise, a NativeRPCServer instance will be returned

Parameters

conf (Any) – the Fugue Configuration Tutorial

Returns

the RPC server

Return type

RPCServer

fugue.rpc.base.to_rpc_handler(obj)[source]#

Convert object to RPCHandler. If the object is already RPCHandler, then the original instance will be returned. If the object is None then EmptyRPCHandler will be returned. If the object is a python function then RPCFunc will be returned.

Parameters

obj (Any) – RPChandler like object

Returns

the RPC handler

Return type

RPCHandler

fugue.rpc.flask#

class fugue.rpc.flask.FlaskRPCClient(key, host, port, timeout_sec)[source]#

Bases: RPCClient

Flask RPC Client that can be used distributedly. Use make_client() to create this instance.

Parameters
  • key (str) – the unique key for the handler and this client

  • host (str) – the host address of the flask server

  • port (int) – the port of the flask server

  • timeout_sec (float) – timeout seconds for flask clients

class fugue.rpc.flask.FlaskRPCServer(conf)[source]#

Bases: RPCServer

Flask RPC server that can be used in a distributed environment. It’s required to set fugue.rpc.flask_server.host and fugue.rpc.flask_server.port. If fugue.rpc.flask_server.timeout is not set, then the client could hang until the connection is closed.

Parameters

conf (Any) – the Fugue Configuration Tutorial

Examples

conf = {
    "fugue.rpc.server": "fugue.rpc.flask.FlaskRPCServer",
    "fugue.rpc.flask_server.host": "127.0.0.1",
    "fugue.rpc.flask_server.port": "1234",
    "fugue.rpc.flask_server.timeout": "2 sec",
}

with make_rpc_server(conf).start() as server:
    server...
make_client(handler)[source]#

Add handler and correspondent FlaskRPCClient

Parameters

handler (Any) – RPChandler like object

Returns

the flask RPC client that can be distributed

Return type

RPCClient

start_server()[source]#

Start Flask RPC server

Return type

None

stop_server()[source]#

Stop Flask RPC server

Return type

None