ZeroMQ与Asyncio的集成。
aiozmq的Python项目详细描述
对ZeroMQ的异步(PEP 3156)支持。
文档
见http://aiozmq.readthedocs.org
简单的高级客户机服务器rpc示例:
import asyncio import aiozmq.rpc class ServerHandler(aiozmq.rpc.AttrHandler): @aiozmq.rpc.method def remote_func(self, a:int, b:int) -> int: return a + b @asyncio.coroutine def go(): server = yield from aiozmq.rpc.serve_rpc( ServerHandler(), bind='tcp://127.0.0.1:5555') client = yield from aiozmq.rpc.connect_rpc( connect='tcp://127.0.0.1:5555') ret = yield from client.call.remote_func(1, 2) assert 3 == ret server.close() client.close() asyncio.get_event_loop().run_until_complete(go())
低级请求回复示例:
import asyncio import aiozmq import zmq @asyncio.coroutine def go(): router = yield from aiozmq.create_zmq_stream( zmq.ROUTER, bind='tcp://127.0.0.1:*') addr = list(router.transport.bindings())[0] dealer = yield from aiozmq.create_zmq_stream( zmq.DEALER, connect=addr) for i in range(10): msg = (b'data', b'ask', str(i).encode('utf-8')) dealer.write(msg) data = yield from router.read() router.write(data) answer = yield from dealer.read() print(answer) dealer.close() router.close() asyncio.get_event_loop().run_until_complete(go())
要求
- Python3.3+
- pyzmq13.1+
- asyncio或python 3.4+
- 可选子模块aiozmq.rpc需要msgpack-python0.4+
许可证
aiozmq是根据bsd许可证提供的。
更改
0.7.1(2015-09-20)
- 修复监视事件的实现
- 使库与Python3.5兼容
0.7.0(2015-07-31)
- 实施监控ZMQ事件50
- 深入查找固有类54
- 放松Endpont check 56
- 实现流api 52的监视事件
0.6.1(2015-05-19)
- 动态获取pyzmq套接字类型列表
0.6.0(2015-02-14)
- 将特定于异步的异常作为内置项处理。
- 将repr(异常)添加到rpc服务器调用日志(如果有)
- add transport.get_write_buffer_limits()方法
- 将repr添加到传输中
- 将zmq_type添加到tr.get_extra_info()
- 添加ZMQ流
0.5.2(2014-10-09)
- 为无事件传输发送zmq消息后轮询事件
0.5.1(2014-09-27)
- 修复无环传输实现。
0.5.0(2014-08-23)
- 在aiozmq.rpc.serve_rpc()中支持zmq设备
- 添加无环0mq传输
0.4.1(2014-07-03)
- 将exclude_log_exceptions参数添加到rpc服务器。
0.4.0(2014-05-28)
- 在zmqtransport中实现暂停读取/恢复读取方法。
0.3.0(2014-05-17)
- 添加对Windows的有限支持。
- 修复不稳定的测试执行,将zmqeventloop更改为使用全局 默认情况下共享zmq.context。
- 在rpc服务器和客户端上取消进程。
0.2.0(2014-04-18)
- msg中的msg是一个列表,而不是元组
- 允许通过trsansport.write()发送空消息
- 添加基准
- 从aiozmq.rpc.error派生ServiceClosederRor,而不是异常
- 在服务器端实现远程调用的日志记录(logu exceptions参数)。
- 优化zmqtransport中的字节计数。
0.1.3(2014-04-10)
- 函数默认值不会传递给注释。 添加libzmq版本的检查(应为>;=3.0)
0.1.2(2014-04-01)
- 函数默认值不会传递给注释。
0.1.1(2014-03-31)
- 将多个模块名重命名为单个模块名。
0.1.0(2014-03-30)
- 使用操作的create_zmq_connection方法实现zmqeventloop 关于ZMQ传输和协议。
- 实现zmqeventlooppolicy。
- 介绍ZMQTransport和ZMQProtocol。
- 使用rpc、pushpull和pubsub协议实现zmq.rpc。