Skip to content

stonegithubs/torpc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ToRPC

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
UDS = use Unix Domain Socket.
environment coroutine(QPS) callback(QPS)
Python 12870 16025
Python(UDS) 14771 19685
PyPy 53032 58002
PyPy(UDS) 71519 78865

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

中文

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%