为Python和zope提供AMQP广播。
项目描述
概述
zamqp旨在通过AMQP在Python实例之间广播消息并触发事件。
它基于amqplib,提供消费者和生成器实现,并提供远程触发zope事件的功能。
辅助类
为AMQP连接创建属性。
>>> from zamqp import AMQPProps >>> props = AMQPProps(host='localhost', ... user='guest', ... password='guest', ... ssl=False, ... exchange='zamqp.broadcast.fanout', ... type='fanout', ... realm='/data')
手动创建AMQP连接。
>>> from zamqp import AMQPConnection >>> connection = AMQPConnection('zamqp_queue', props)
访问连接通道。
>>> connection.channel
消费者和生成器
创建消费者回调。
>>> def callback(message): ... pass # do anything with received message here
创建并启动消费者线程。
>>> from zamqp import AMQPConsumer >>> from zamqp import AMQPThread >>> consumer = AMQPConsumer('zamqp_queue', props, callback) >>> thread = AMQPThread(consumer) >>> thread.start()
创建生成器并发送消息。每个可序列化的Python对象都可以用作消息。
>>> from zamqp import AMQPProducer >>> producer = AMQPProducer('zamqp_queue', props) >>> message = 'foo' >>> producer(message)
触发事件
创建将在远程实例中触发的事件。
>>> class MyEvent(object): ... def __init__(self, name): ... self.name = name
为MyEvent创建监听器。当接收到AMQP事件时,将调用此函数。
>>> def my_listener(event): ... if not isinstance(event, MyEvent): ... return ... # do something >>> import zope.event >>> zope.event.subscribers.append(my_listener)
默认的AMQPEventCallback仅调用zope.event.notify,将接收到的有效负载(即序列化的事件)作为参数,在这种情况下是一个MyEvent的实例。
启动我们的AMQP事件消费者。
>>> exchange = 'zamqp.events.fanout' >>> queue = 'zamqp_events' >>> from zamqp import AMQPEventCallback >>> props = AMQPProps(exchange=exchange) >>> callback = AMQPEventCallback() >>> consumer = AMQPConsumer(queue, props, callback) >>> thread = AMQPThread(consumer) >>> thread.start()
将MyEvent触发到AMQP通道。之前启动的事件消费者现在接收此事件并在自己的解释器中本地触发。
>>> from zamqp import AMQPEvent >>> event = AMQPEvent(queue, props, MyEvent('myevent')) >>> zope.event.notify(event)
致谢
-Robert Niederreiter <rnix@squarewave.at>
更改
1.0b1
使其工作 [rnix]
项目详情
关闭
zamqp-1.0b1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3cb9f5645fdad0d84b838dda298d97f2070169aadcac638f74c965dffb9841d9 |
|
MD5 | 8e584f8d7a640a82126c793ec7301c54 |
|
BLAKE2b-256 | 7b4fabb83335b9478b51eb3db5fbe49274052aaeb414d718b9136ca2399fd467 |