pj

python-jrpc

A Python remote procedure call framework that uses JSON RPC v2.0

Showing:

Popularity

Downloads/wk

0

GitHub Stars

84

Maintenance

Last Commit

3yrs ago

Contributors

3

Package

Dependencies

0

License

UNKNOWN

Categories

Readme

Python-JRPC

A Python remote procedure call framework that uses JSON RPC v2.0

Install using pip:

pip install python-jrpc

Socket Based Usage

Python-JRPC allows programmers to create powerful client/server programs with very little code. Here's an example of a server and client:

Server

import jrpc

class SimpleService(jrpc.service.SocketObject):
    @jrpc.service.method
    def echo(self, msg):
        return msg

server = SimpleService(50001) #Include the listening port
server.run_wait()

Client

import jrpc

server = None
server = jrpc.service.SocketProxy(50001) #The server's listening port
print server.echo("Hello World!")

Web Based (Flask) Usage

A recent addition to Python JRPC offers Flask integration. Using this feature, client side Javascript can easily call webservice API methods.

Flask App

from jrpc.web import *
import jrpc.service
from flask import Flask, render_template

app = Flask(__name__)

class WebService(JRPCBlueprint):
    def __init__(self):
        JRPCBlueprint.__init__(self, "service", __name__, url_prefix="/api")

    @jrpc.service.method(path = "/echo/<name>")
    def echo(self, text, prefix = "Hello from", name = ""):
        return {"subject": prefix + " " + name, "message": text}

app.register_blueprint(WebService())

@app.route('/')
def index():
    return render_template("index.html")
app.run(host='0.0.0.0', port=8080, debug=True)

Index.html Javascript

jrpc("/api").done(function(api) {
    api.echo({name: "Python JRPC", text: "Now with more Flask"}).done(function(result) {
        $("#result").text(JSON.stringify(result));
    });
});

Result

{"subject":"Hello from Python JRPC", "message":"Now with more Flask"}

Why Use It?

Python-JRPC takes all of the boiler-plate code out of your network applications. Forget reading through socket documentation and developing your own message formats. All you need to do is write your Python server/client logic and let Python-JRPC handle the networking for you. Here's what you get:

  • Remote method call with JSON serializable parameters/return values
  • Synchronization/thread safety in servers/clients
  • Remote exception passing (When calling a remote method in a client, exceptions thrown by the server code will be thrown locally!)
  • Simplified Flask applications, client side Javascript can easily call webservice API methods

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial