2013-07-05 63 views
0

編輯:我將它發佈到python-list和tutor-list,沒有響應。任何意見將不勝感激。在Python中編碼一個AMQP監聽和麪向用戶的守護進程

寫一個可以爲不同類型的事件(AMQP消息,子進程的解析輸出,HTTP請求)執行回調的併發守護進程的最佳方法是什麼?

我在考慮twisted,內置threading模塊和greenlet。我必須承認,我並不熟悉併發編程和一般的Python編程(以前是數據分析驅動的程序員)。任何有關線程/併發編程的資源(特別是守護進程......不僅僅是多線程的單個任務)都將非常值得讚賞。

謝謝!

詳情:

1)監聽到AMQP的消息隊列和消息到達後執行的回調。 示例:剛剛啓動後,守護程序會不斷收聽Openstack Notifications messaging queue。當啓動虛擬機時,Openstack會通過主機名,IP地址等生成通知。守護程序應該讀取此消息並向日志中寫入一些信息(或將POST信息發送到服務器,或通知用戶..有些簡單)。

2)解析子流程的輸出並根據輸出執行回調。例如:每30秒鐘,運行一個系統命令「qstat」以查詢作業資源管理器(例如TORQUE)。類似的回調1)。

3)接收來自用戶的請求並處理它們。我認爲這將通過WSGI HTTP。 示例:用戶使用虛擬機模板提交XML模板。守護進程執行一些簡單的XML解析併爲作業資源管理器寫入作業腳本。作業提交給資源管理器,守護程序通過「qstat」和AMQP的消息持續檢查作業的狀態。它應該向用戶返回「實時」反饋並寫入日誌。

回答

0

您可能想看看OpenStack奧斯陸項目。

從這裏開始:

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

奧斯陸基本上是OpenStack的所有應用程序的共享資源。這裏的重點是提供可重用的代碼,並對許多應用程序創建或使用的方法進行標準化。消息作爲OpenStack的基本組成部分有一些突破。另外,由於OpenStack支持許多消息傳遞協議,因此可能直接進行AMQP並不適合您。

反正檢查此...

消息具體被放在這裏:

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

我會去挖掘到倉庫,並與一些提供有方法玩。