TorThrift ========
Tornado asynchronous thrift server and client
torthrift - presents a Tornado Future-based API and greenlet for non-blocking thrift server and client.
pip install TorThrift
example.thrift
service Example{
i32 add(1:i32 a,2:i32 b)
}
thrift --gen py example.thrift
server.py
from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
from torthrift.transport import TIOStreamTransportFactory
from torthrift.server import TTornadoServer
from example.Example import Processor
from tornado.ioloop import IOLoop
from torthrift import gen
class Handler(object):
@gen.coroutine
def add(self,a,b):
raise gen.Return(a+b)
handler = Handler()
processor = Processor(handler)
tfactory = TIOStreamTransportFactory()
protocol =TBinaryProtocolFactory()
server = TTornadoServer(processor, tfactory, protocol)
server.bind(20000)
server.start(0)
IOLoop.instance().start()
client.py
from tornado.ioloop import IOLoop
from tornado import gen
from example.Example import Client
from thrift import Thrift
from torthrift.pool import TStreamPool
from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
from torthrift.client import PoolClient
@gen.coroutine
def test():
try:
transport = TStreamPool('127.0.0.1', 20000, max_stream=10)
client = PoolClient(Client, transport, TBinaryProtocolFactory())
res = yield client.add(0,i)
print res
yield client.close()
except Thrift.TException as ex:
print("%s" % (ex.message))
ioloop.stop()
ioloop = IOLoop.instance()
ioloop.add_callback(test)
ioloop.start()