一个可以从多个输入源中消耗事件并将其发布到标准PSHB集线器的PubSuuHubBub发布器和Atom feed生成器。
yagi的Python项目详细描述
#yagi
一个用python编写的模块化openstack通知事件处理器/广播程序。
yagi设计用于有效地收集json格式的amqp消息
openstack项目通知总线使用,从大量可配置的队列中收集,并通过一组可扩展的简单处理程序对其进行处理。.
处理程序编写简单,可以在类似wsgi的体系结构中链接。
yagi一次处理一批获取消息,并将获取的
消息传递给每个处理程序,处理amqp消息语义,以便处理程序可以集中处理手头的任务。
已在数据存储中持久化的通知事件的分页atom feed
。
对于feed
服务器(如atomhopper)(http://atomhopper.org/)
*redis:将通知持久化到redis数据库非常有用。可以与
Yagi的feed守护程序一起使用。
*pubsububub:在通知到达时ping pubsububub集线器。
与集线器和Yagi的feed守护程序一起,这可以
启用对通知事件的发布/订阅订阅。
*stacktacking:与stacktach openstack监视一起工作以ol到
监视事件源。如果您使用yagi提供openstack通知的
feed,那么当更新这些feed时,这将ping
stacktach,通知它更新的成功或失败,让您捕捉feed服务器是否关闭,或某个系统是否
正在删除事件。
fig文件可以这样传递给yagi:
yagi event-c/path/to/config/file
yagi不进行后台监控。使用您最喜欢的守护进程管理器来执行此操作。
解开。这允许yagi
在feed中正确地构造链接。
*持久性:如果使用redis处理程序,请将reddisc连接
信息放在此处。
*consumers:"queues"配置变量列出了yagi应该监听的队列。
*consumer:$queue\u name:对于yagi正在监听的每个队列配置文件中应该有一个consumer部分
(例如,如果您有一个名为
some.queue的队列在[consumers]部分中列出,
应该有一个[consumer:some.queue]
部分,其中配置了hat-specific queue.)
这应该列出队列的属性,比如它应该是持久的。
这里的重要变量是"apps",
这是一个用逗号分隔的处理程序列表,其中
来自该队列的消息应被传递到,以及"max_messages",它是Yagi将拉取的最大消息数一次排队。(然后进入下一个队列,
最终,如果仍有
消息等待,
通过运行多个进程来扩展。只需启动尽可能多的yagi事件进程,就可以处理负载。(Yagi事件相当轻量级)
/>*pubsububbub_publish(如果使用pubsububub处理程序)(在从
[谷歌代码](http://code.google.com/p/pubsububbub/source/checkout)签出项目后,可在
publisher_clients文件夹下找到)
注意:计划稍后用我们的实现替换此依赖项。在
*carrot上(如果使用rabbit)
*路由
ownloads.html
,然后签出引用中心。
install pubsububbub_publisher for python
cd pubsububbub read only/publisher_clients/python
sudo python setup.py inst所有
启动集线器
cd pubsububbub只读
dev_appserver.py hub/-p<;在yagi.conf>中指定的端口号;
pubsubub的测试订阅。
cd yagi
#会话,因为回调进程不会对python subscriber/callback.py<;sub_port>;
python subscriber/sub.py<;topic>;<;callback>;
i通常在ipython会话中加载other/push_rabbit.py
cd other
ipython
导入push-rabbit
ack.py,上面。
\brokers、consumers和handlers(apps)
配置文件中定义为:
[event\u worker]
event\u driver=yagi.broker.rabbit.broker
为定义的每个输入队列创建。
[消费者]
队列=队列1,队列2
[消费者:队列1]
应用程序=yagi.handler.handler1,myhandlers.handler
路由密钥=通知。警告
[消费者:队列2]
应用程序=…
并将它们交给
处理程序进行处理。由于遗留原因,处理程序也称为应用程序。
处理程序被链接在一起,如果处理程序认为调用子处理程序是适当的(默认行为),则处理程序的职责是调用子处理程序。
但是,某些处理程序可能希望在其他条件下因错误而终止链。每个处理程序还可以自己处理消息。首先根据该处理程序的筛选器列表检查
通知,如果
被接受,则调用"handle_messages()"方法。子处理程序总是被未筛选的调用。
[筛选器]
cufpub=compute.instance.exists.verified,compute.instance.exists
当前,筛选器应用于所有处理程序,但这应更改为每个处理程序筛选器列表。
看看"八木"。处理程序。有关详细信息,请参阅初始化。
一个用python编写的模块化openstack通知事件处理器/广播程序。
yagi设计用于有效地收集json格式的amqp消息
openstack项目通知总线使用,从大量可配置的队列中收集,并通过一组可扩展的简单处理程序对其进行处理。.
处理程序编写简单,可以在类似wsgi的体系结构中链接。
yagi一次处理一批获取消息,并将获取的
消息传递给每个处理程序,处理amqp消息语义,以便处理程序可以集中处理手头的任务。
已在数据存储中持久化的通知事件的分页atom feed
。
对于feed
服务器(如atomhopper)(http://atomhopper.org/)
*redis:将通知持久化到redis数据库非常有用。可以与
Yagi的feed守护程序一起使用。
*pubsububub:在通知到达时ping pubsububub集线器。
与集线器和Yagi的feed守护程序一起,这可以
启用对通知事件的发布/订阅订阅。
*stacktacking:与stacktach openstack监视一起工作以ol到
监视事件源。如果您使用yagi提供openstack通知的
feed,那么当更新这些feed时,这将ping
stacktach,通知它更新的成功或失败,让您捕捉feed服务器是否关闭,或某个系统是否
正在删除事件。
fig文件可以这样传递给yagi:
yagi event-c/path/to/config/file
yagi不进行后台监控。使用您最喜欢的守护进程管理器来执行此操作。
解开。这允许yagi
在feed中正确地构造链接。
*持久性:如果使用redis处理程序,请将reddisc连接
信息放在此处。
*consumers:"queues"配置变量列出了yagi应该监听的队列。
*consumer:$queue\u name:对于yagi正在监听的每个队列配置文件中应该有一个consumer部分
(例如,如果您有一个名为
some.queue的队列在[consumers]部分中列出,
应该有一个[consumer:some.queue]
部分,其中配置了hat-specific queue.)
这应该列出队列的属性,比如它应该是持久的。
这里的重要变量是"apps",
这是一个用逗号分隔的处理程序列表,其中
来自该队列的消息应被传递到,以及"max_messages",它是Yagi将拉取的最大消息数一次排队。(然后进入下一个队列,
最终,如果仍有
消息等待,
通过运行多个进程来扩展。只需启动尽可能多的yagi事件进程,就可以处理负载。(Yagi事件相当轻量级)
/>*pubsububbub_publish(如果使用pubsububub处理程序)(在从
[谷歌代码](http://code.google.com/p/pubsububbub/source/checkout)签出项目后,可在
publisher_clients文件夹下找到)
注意:计划稍后用我们的实现替换此依赖项。在
*carrot上(如果使用rabbit)
*路由
ownloads.html
,然后签出引用中心。
install pubsububbub_publisher for python
cd pubsububbub read only/publisher_clients/python
sudo python setup.py inst所有
启动集线器
cd pubsububbub只读
dev_appserver.py hub/-p<;在yagi.conf>中指定的端口号;
pubsubub的测试订阅。
cd yagi
#会话,因为回调进程不会对python subscriber/callback.py<;sub_port>;
python subscriber/sub.py<;topic>;<;callback>;
i通常在ipython会话中加载other/push_rabbit.py
cd other
ipython
导入push-rabbit
ack.py,上面。
\brokers、consumers和handlers(apps)
[event\u worker]
event\u driver=yagi.broker.rabbit.broker
为定义的每个输入队列创建。
[消费者]
队列=队列1,队列2
[消费者:队列1]
应用程序=yagi.handler.handler1,myhandlers.handler
路由密钥=通知。警告
[消费者:队列2]
应用程序=…
并将它们交给
处理程序进行处理。由于遗留原因,处理程序也称为应用程序。
处理程序被链接在一起,如果处理程序认为调用子处理程序是适当的(默认行为),则处理程序的职责是调用子处理程序。
但是,某些处理程序可能希望在其他条件下因错误而终止链。每个处理程序还可以自己处理消息。首先根据该处理程序的筛选器列表检查
通知,如果
被接受,则调用"handle_messages()"方法。子处理程序总是被未筛选的调用。
[筛选器]
cufpub=compute.instance.exists.verified,compute.instance.exists
当前,筛选器应用于所有处理程序,但这应更改为每个处理程序筛选器列表。
看看"八木"。处理程序。有关详细信息,请参阅初始化。