Skip to main content

A tiny async tcp and duplex rpc implementation using Tornado IOLoop.

Project description

ToRPC(Tornado + RPC) is a tiny tcp and duplex RPC implementation in Python based on Tornado IOLoop. It’s very lightweight and high performance(especially on PyPy).

Notice: ToRPC was only tested on CPython 2.7+ and PyPy 2.5+ until now.

## Examples

RPC server

from tornado import ioloop
from torpc import RPCServer
server = RPCServer(('127.0.0.1', 5000))

@server.service.register()
def echo(x):
    return x

server.start()
ioloop.IOLoop.instance().start()

RPC client

from tornado import ioloop, gen
from torpc import RPCClient

def result_callback(f):
    print(f.result())

@gen.coroutine
def using_gen_style():
    want_to_say = 'way to explore'
    ret = yield rc.call('echo', want_to_say)
    assert ret == want_to_say
    print('gen_style complete')

rc = RPCClient(('127.0.0.1', 5000))
rc.call('echo', 'hello world', callback=result_callback)
future = rc.call('echo', 'code for fun')
future.add_done_callback(result_callback)
using_gen_style()
ioloop.IOLoop.instance().start()

See more in examples.

Performance

OS: CentOS 6.6 x64 CPU: Intel i5-3470 3.20GHz Memory: 8 GB 1600 MHz DDR3 Python: 2.7.10 PyPy: 4.0.0

environment call coroutine(qps) callback(qps)
Python(with timeout) 9842 11614
Python 13192 16638
PyPy(with timeout) 40486 41225
PyPy 53252 59151
PyPy(unix domain) 67100 74362

In this benchmark, Python loops 100k times and PyPy loops 1000k times, then run 3 times of each, the result is on gist:benchmark_result.txt

Document

中文

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
torpc-0.0.1.tar.gz (6.6 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page