2010-09-03 62 views
4

我正在設計提供自己的自定義API的某個硬件設備的Web界面。所述網絡界面可以一次管理多個設備。通過使用自定義API進行輪詢從設備中檢索數據,因此最好使其異步。針對多個消費者和單個數據源的設計模式

最明顯的是有一個輪詢線程輪詢數據,使用信號量保存到一個進程範圍的單例中,然後Web服務器線程將從所述單例中檢索數據並顯示它。我不是一個單身人士或者一起設計設計的狂熱粉絲,所以我想可能會將輪詢數據源從Web服務器分離出來,在本地接口上循環使用,並使用類似XML-RPC的方式來使用數據。

該應用程序不必是'enterprisey'或可擴展的,因爲它一次最多可以由幾個人訪問,但我寧願通過不將兩種邏輯混合在一起來使其穩定。目前在Python中使用CherryPy實現了它,它是我見過的最糟糕的設計混雜體。我覺得如果我用最明顯的設計去做,我最終會以我自己的方式重新實現同樣可怕的事情。

+0

「單個數據源」!=「可以管理多個設備」 – katrielalex 2010-09-03 21:18:40

+0

對我而言,這並不重要,因爲每個消費者都會將整個數據視爲一個整體。有點像如果你建立一個RDMBS的無共享集羣,它仍然是一個單一的數據源。 – Novikov 2010-09-03 21:20:53

回答

4

如果您使用Djangocelery,您可以創建一個Django項目作爲Web界面和芹菜作業以在後臺運行並進行輪詢。在那份工作中,您可以導入您的Django模型,以便它可以非常簡單地保存輪詢結果。

+0

芹菜看起來像高層次的解決方案我的問題,非常感謝:) – Novikov 2010-09-03 21:21:57

相關問題