ZeroMQ与Asyncio的集成。

aiozmq的Python项目详细描述


对ZeroMQ的异步(PEP 3156)支持。

https://travis-ci.org/aio-libs/aiozmq.svg?branch=master

文档

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())

要求

许可证

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。

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

推荐PyPI第三方库


热门话题
Java中是否有数字的默认类型   java调用一个类的方法来使用另一个类的实例   java HtmlUnit不适用于javascript处理   java需要帮助才能连接MongoDB   java如何从Maven中的src/main/resources复制文件?   java保存Int值(共享首选项)   从另一个类调用方法时,java Autowired组件出现空指针异常   java Spring JPA:PropertyAccessException 1:。。。MethodInvocationException:。'driverClassName'。。。org/postgresql/Driver:不支持的专业。次要版本52.0   java使用增强的JDO模型类在Eclipse中运行Junit测试   java如何使用eclipse IDE为junit创建可运行的jar文件   java如何在安卓中检测应用程序的启动和退出   java在其他线程可以访问静态映射时从数据库更新静态映射   java@Entitty和@EntityScan不起作用。我正在使用SpringBoot和jpa存储库,发生了很多次   java如何与google日历集成?