小时消息包PRC

tornado_msgpack的Python项目详细描述


又一个针对python的messagepack rpc

历史记录

  • 20130827 0.4添加日志记录

样品

演示

#!/usr/bin/env python

port=28080

import tornado_msgpack
dispatcher=tornado_msgpack.Dispatcher()
def add(a, b):
    return a+b
dispatcher.add_handler("add", add)

with tornado_msgpack.ServerLoop("", port, dispatcher.on_message):
    with tornado_msgpack.ClientLoop("localhost", port) as client:
        print(client.call_sync("add", 3, 4))

服务器

#!/usr/bin/env python

import tornado_msgpack
import tornado

port=18080

# dispatcher
dispatcher=tornado_msgpack.Dispatcher()
def add(a, b):
    return a+b
dispatcher.add_handler("add", add)

# server
server_loop=tornado.ioloop.IOLoop()
server=tornado_msgpack.Server(server_loop, dispatcher.on_message)
server.listen(port)

import signal
def handler(signum, frame):
    server_loop.stop()
signal.signal(signal.SIGINT, handler)

try:
    # blocking...
    server_loop.start()
except ex as KeyboardInterrupt:
    pass

客户

#!/usr/bin/env python
import tornado_msgpack
import tornado
import threading

host="127.0.0.1"
port=18080

client_loop=tornado.ioloop.IOLoop()
client_thread=threading.Thread(target=lambda : client_loop.start())

# connecion status
def on_status(session):
    print("status changed: "+session.status)
client=tornado_msgpack.Client(client_loop, on_status)

client.session.connect(host, port)
try:
    client_thread.start()

    # sync
    result=client.call_sync("add", 3, 4)

    # async
    future=client.call_async("add", 5, 6)
    future.join() # wait server respone
    msgpack_rpc=future.message
    result=msgpack_rpc[3]

    # async_with_callback
    def on_receive(msgpack_rpc):
        print(msgpack_rpc)
    future=client.call_async_with_callback(on_receive, "add", 5, 6)
    future.join() # wait server respone

finally:
    client_loop.stop()
    client_thread.join()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?