与异步事件循环集成的ZeroMQ套接字

Zantedeschia的Python项目详细描述


Zantedeschia是Asyncio和 零MQ套接字。

我开始尝试使用aiozmq,但是 反对一些设计决定。我从代码中借鉴了一些想法,但是 做了一些不同的事情:

  1. aiozmq是围绕Asyncio的协议和传输API构建的,我 很难使用;即使是最简单的例子也涉及到子类化 ZmqProtocol。Zantedeschia使用一个AsynczmqSocket包装类, 简单的语义。
  2. zantedeschia不包含rpc框架。
  3. zantedeschia希望用户使用pyzmq创建和连接zmq套接字, 然后将它们包装在asynczmqsocket对象中。

zantedeschia是一个花属。asyncio本身最初的代号是 “郁金香”,以及以花命名异步库的传统。

用这个你自己承担风险。Pyzmq的作者Minrk告诉我 不应该依赖zmq文件描述符进行事件循环,但我正在 正是这样。

ping服务器示例:

importasyncio,zmq,zantedeschiactx=zmq.Context()s=ctx.socket(zmq.REP)s.bind('tcp://127.0.0.1:8123')async_sock=zantedeschia.AsyncZMQSocket(s)defpong():whileTrue:msg_parts=yield fromasync_sock.recv_multipart()yield fromasync_sock.send_multipart(msg_parts)asyncio.get_event_loop().run_until_complete(pong())

改用on_recvapi:

importasyncio,zmq,zantedeschiactx=zmq.Context()s=ctx.socket(zmq.REP)s.bind('tcp://127.0.0.1:8123')async_sock=zantedeschia.AsyncZMQSocket(s)@async_sock.on_recvdefpong(msg_parts):async_sock.send_multipart(msg_parts)asyncio.get_event_loop().run_forever()

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

推荐PyPI第三方库


热门话题
java刷新系统。用自己的记录器输出   使用Jython将参数从Java传递到Python   JavaSocksV4代理   java如何使用通知?   java@DirtiesConext不工作   java将多个jar组合成一个(使用maven)   java使用相等运算符比较两个类   java我怎样才能让两个JOptionPane一起出现在我的第一页上,并让它们在两个页面上都有正确的答案?   html无法访问java中资产文件夹内的文件   通过post命令向SpringWebApp发送对象时,java对象字段为null   单个实例中静态变量的类更改值(Java)   java解决方案是什么   试图检查网站所有受支持的密码套件的安全性,在java中遇到chacha20和poly1035问题