同步和异步AMQP客户端库
haigha的Python项目详细描述
Version: | 0.9.0 |
---|---|
Download: | http://pypi.python.org/pypi/haigha |
Source: | https://github.com/agoragames/haigha |
Keywords: | python, amqp, rabbitmq, event, libevent, gevent |
Overview
haigha提供了一个简单易用的客户端库,用于与amqp代理进行交互。它目前支持0.9.1协议,并根据最新的rabbitmq 2.8.1进行了集成测试(参见errata)。haigha是py-amqplib的后代,对它的开发人员负有很大的责任。
haigha的目标是性能、简单性和对amqp协议的形式和功能的遵守。它添加了一些有用的特性,例如ChannelPool类和Channel.publish_synchronous,以便于在实际应用程序中使用强大的特性。
默认情况下,haigha以完全异步模式运行,依赖回调将来自代理的响应通知应用程序代码。如果适用,nowait默认为True。欢迎应用程序代码调用一系列方法,haigha将在事件循环中管理堆栈和同步握手。
从0.5.0系列开始,haigha本机支持3种传输类型:libevent、gevent和标准套接字。socket实现默认为同步模式,对于交互式控制台或脚本非常有用,gevent传输是首选的异步后端,尽管它也可以同步使用。
Documentation
这个文件和scripts目录中的各种文件是对haigha的简单介绍。有关更完整的文档,请参见DOCUMENTATION.rst。
Example
有关几个示例,请参见scripts和examples目录,特别是stress_test脚本,您可以使用该脚本测试haigha对代理的性能。下面是连接、处理一条消息并退出的客户端的简单示例。
from haigha.connection import Connection from haigha.message import Message connection = Connection( user='guest', password='guest', vhost='/', host='localhost', heartbeat=None, debug=True) ch = connection.channel() ch.exchange.declare('test_exchange', 'direct') ch.queue.declare('test_queue', auto_delete=True) ch.queue.bind('test_queue', 'test_exchange', 'test_key') ch.basic.publish( Message('body', application_headers={'hello':'world'}), 'test_exchange', 'test_key' ) print ch.basic.get('test_queue') connection.close()
要对rabbitmq使用协议扩展,请使用haigha.connections.rabbit_connection.RabbitConnection类初始化连接。
Roadmap
- 文档(总是有更多的文档)
- 改进了错误处理
- 规范中错误代码的实现
- 与RabbitMQ以外的代理进行测试和集成
- 识别并改进低效代码
- 帧管理中的边缘案例
- 提高使用率
- SSL
- 异步传输但连接处于同步模式时允许nowait。
Haigha已经用Python2.6和2.7进行了专门的测试,但是我们希望它也能与3.x系列一起工作。请report您可能有任何问题。
Installation
haigha在pypi上可用,可以使用pip
安装pip install haigha
如果从源安装:
有开发需求(如测试框架)
pip install -r development.txt
无开发要求
pip install -r requirements.txt
注意,haigha不会自动安装gevent或libevent支持。对于libevent,haigha已经用event-agora==0.4.1库进行了测试和部署。
Testing
单元测试可以使用包含的脚本运行,也可以使用nose
./haigha$ scripts/test ./haigha$ nosetests
还有另外两个值得注意的测试脚本。rabbit_table_test是一个简单的集成测试,它确认符合rabbitmqerrata。stress_test脚本是一个有价值的工具,它提供类似于Apache Bench或Siege的负载测试功能。它用于确认haigha的健壮性,以及基准硬件或代理配置。
Bug tracker
如果您有任何建议、错误报告或烦恼,请报告 我们的问题跟踪者在https://github.com/agoragames/haigha/issues
License
此软件在新的bsd许可证下获得许可。请参阅LICENSE.txt 文件位于顶级分发目录中,以获取完整的许可证文本。