同步和异步AMQP客户端库

haigha的Python项目详细描述


https://travis-ci.org/agoragames/haigha.svg?branch=master
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

有关几个示例,请参见scriptsexamples目录,特别是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是一个简单的集成测试,它确认符合rabbitmqerratastress_test脚本是一个有价值的工具,它提供类似于Apache BenchSiege的负载测试功能。它用于确认haigha的健壮性,以及基准硬件或代理配置。

Bug tracker

如果您有任何建议、错误报告或烦恼,请报告 我们的问题跟踪者在https://github.com/agoragames/haigha/issues

License

此软件在新的bsd许可证下获得许可。请参阅LICENSE.txt 文件位于顶级分发目录中,以获取完整的许可证文本。

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

推荐PyPI第三方库


热门话题
java我在哪里可以得到插件。罐子   java整数。parseInt数字格式异常?   swing Java动态创建按钮并将参数传递给执行的操作   java如何测试下载大文件的方法   java无法连接到SMTP主机:javamail   java通过泛型避免向下转换?   java Android警报未触发   cucumber中的java My脚本不适用于appium服务器?   输入IO扫描器Java   JavaFX并发冻结用户界面   java Jbox2d与定位平台的问题   java如何连接RCP应用程序中的两个视图   安卓如何解决java。lang.ArrayStoreException   java@PropertySource不是在使用传统tomcat war部署的spring boot应用程序中获取的   具有ISO时间的java意外输出(8601)   委托以静态方法从Java通过类委托调用Kotlin对象   java是JFrame处理的吗?