0

编辑:我将其发布到 python-list 和utor-list 没有回应。任何建议将不胜感激。

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

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

谢谢!

细节:

1) 监听 AMQP 消息队列并在消息到达时执行回调。示例:在启动后,守护程序会立即持续侦听Openstack Notifications 消息队列。当虚拟机启动时,Openstack 会生成一个包含主机名、IP 地址等的通知。守护进程应该读取此消息并将一些信息写入日志(或将信息发布到服务器,或通知用户.. .一些简单的东西)。

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

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

4

1 回答 1

0

您可能想查看 OpenStack Oslo 项目。

从这里开始:

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

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

消息传递作为 OpenStack 的一个基本组件有一些突破。此外,由于 openstack 支持许多消息传递协议,因此直接 AMQP 可能不是您的正确答案。

无论如何检查这个...

消息具体放在这里:

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

我会深入研究该存储库并使用那里提供的一些方法。

于 2013-07-09T09:03:59.327 回答