Python的RabbitMQ连接器库,与Tornado框架完全集成
tornado-bunn的Python项目详细描述
龙卷风兔子
与Tornado Framework完全集成的Python的RabbitMQ连接器库。在
简介
Tornado Bunny在这里简化使用RabbitMQ的工作,同时使用Tornado框架。
此库提供与tornado.ioloop
完全集成的RabbitMQ连接器的异步实现。
Tornado Bunny连接器是一体式连接器,支持多种功能:
- 发布-发布消息。在
- 接收-使用队列中的消息。若接收到的属性不是none,则它将结果发布回“reply_to”队列。在
- rpc-将带有replay_的消息发布到属性(correlation_id和队列名称),等待应答消息并返回值。在
安装
pip install -U tornado_bunny
示例
简单接收器(从队列打印消息)
^{pr2}$使用RPC模式的完整微服务
在实现RabbitMQ Remote procedure call (RPC)模式时,实现一个完全可伸缩的应用程序的2个微服务实例可以在examples目录中找到。在
建筑
AsyncConnection
- 处理与RabbitMQ服务器的单个连接的类。类构造函数获取一个名为“io_nuloop”的参数,假设创建连接的用户希望自己提供io\u循环。此类同时支持Tornado ioloop和asyncio ioloop。这个类的主要函数是get_connection(),它开始一系列异步调用,直到使用pika包接收到连接对象为止。在ChannelConfiguration
- 在RabbitMQ连接中处理单个通道的类。此类封装了一个AsyncConnection对象,并提供了发布和使用功能。此类获取一个连接(上一段中的异步连接)、一个交换、一个用于将消息发布到的路由键和一个要使用的队列。在TornadoBunny
- 这个类实际上完成了RPC所需的(所有)魔术,它使用了我们到目前为止构建的类以及其他一些小技巧。 封装两个异步通道(每个通道分别有两个连接)的类。第一个通道用于发布消息,而另一个通道用于消费消息。 该类还有两个字典,用于存储与RPC相关的交换和相关id的状态。 receive()函数负责消费消息。如果所使用消息的接收属性不是none,则它将结果发布回reply_to
队列。 函数的作用是:将消息发布到给定的交换。 rpc()函数是实现rpc逻辑的函数。首先,它使用接收队列,然后生成一个唯一的uuid,它将用作相关id,因此它作为键存储在字典中,在字典中关联id和调用方之间进行链接。然后,关联id与应答队列一起附加到一个messageproperties对象,该对象附加到消息上,然后将最终发送该对象。在这一阶段,我们将产生一个只有当我们得到响应时才会调用的_wait_result()函数。在
托多
- 实施普罗米修斯度量支持。在
- 允许传递现有通道。在
- 支持asyncio ioloop。在
- 服务器示例-重构它以呈现真正的HTML
- 编写测试。在
注释
这个包的灵感来自于我多年来遇到的各种实现,特别是在Python2.7版本上。 当前版本包括改进和调整,使其能够与开发此包时最新的框架集成:
- Python 3.8
- 鼠兔1.1.0
- 龙卷风6.0.4
- Ubuntu 18上的RabbitMQ服务器3.8.3
在======= 历史
0.1.0(2020年4月11日)
- PyPI的第一个版本。在
- 项目
标签: