在Python中编写AMQP侦听和面向用户的守护程序

时间:2013-07-05 17:51:10

标签: python rabbitmq twisted amqp openstack

编辑:我把它发布到python-list和tutor-list没有回复。任何建议都将不胜感激。

编写可以为不同类型的事件(AMQP消息,子进程的解析输出,HTTP请求)执行回调的并发守护进程的最佳方法是什么?

我正在考虑twisted,内置threading模块和greenlet。我必须承认,我对并发编程和Python编程(以前是数据分析驱动的程序程序员)非常不熟悉。任何关于线程/并发编程的资源(特别是守护进程......不仅仅是多线程的单个任务)都会非常感激。

谢谢!

详细说明:

1)侦听AMQP消息队列,并在消息到达时执行回调。 示例:启动后,守护程序会立即继续监听Openstack Notifications messaging queue。启动虚拟机时,Openstack会通过主机名,IP地址等生成通知。守护程序应读取此消息并将一些信息写入日志(或将信息POST到服务器,或通知用户.. .something simple)。

2)解析子进程的输出并根据输出执行回调。 示例:每30秒运行一次系统命令“qstat”以查询作业资源管理器(例如TORQUE)。类似的回调1)。

3)接收用户的请求并处理它们。我认为这将通过WSGI HTTP。 示例:用户使用虚拟机模板提交XML模板。守护程序执行一些简单的XML解析并为作业资源管理器编写作业脚本。作业将提交给资源管理器,并且守护程序将使用“qstat”和来自AMQP的消息不断检查作业的状态。它应该向用户返回“实时”反馈并写入日志。

1 个答案:

答案 0 :(得分:0)

您可能需要查看OpenStack Oslo项目。

从这里开始:

https://wiki.openstack.org/wiki/Oslo

Oslo基本上是所有OpenStack应用程序的共享资源。这里的重点是提供可重用的代码,并标准化许多应用程序创建或使用的方法。

消息传递是OpenStack的一个基本组成部分,有一些突破。此外,由于openstack支持许多消息传递协议,因此直接AMQP可能不适合您。

无论如何都要检查......

Messaging具体地放在这里:

https://github.com/openstack/oslo.messaging

我会深入了解该存储库并使用其中提供的一些方法。