一个可以从多个输入源中消耗事件并将其发布到标准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

当前,筛选器应用于所有处理程序,但这应更改为每个处理程序筛选器列表。

看看"八木"。处理程序。有关详细信息,请参阅初始化。

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

推荐PyPI第三方库


热门话题
Android XML阅读器出现java错误   重新索引Solr:java。lang.OutOfMemoryError:Java堆空间解决方案   java安装eclipse插件BPMN2Modeler   java无法使用SpringMVC打开WEBINF子文件夹中的jsp   使用Spring安全性和AJAX身份验证的java安全Rest API   java为什么我们必须将InputStream转换为ByteArrayOutputStream?   javajacksonxml重复标记名   java如何在ScrollPanel中绝对定位小部件?   java自动售货机程序   java为什么变量的作用域有问题?   使用while循环的Java菜单循环   java使用python生成X509Certificate   java如何从约会EWS的主实例获取事件数?   用java中的数组对2组分数进行排序   JavaSpring批处理自定义DB模式初始化