编辑:我将其发布到 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 的消息。它应该向用户返回“实时”反馈并写入日志。