[英]Suggestions for developing a threaded tcp based admin interface
我構建了一個非常簡單的TCP服務器(使用python),該服務器在查詢時返回運行所述腳本的主機OS的各種系統級統計信息。
作為我實驗和目標的一部分,以獲取有關python及其可用庫的知識; 我想建立在一個管理界面上:a)綁定到單獨的TCP套接字b)接受來自LAN的遠程連接,並且c)允許連接的用戶發出各種命令。 Varnish應用程序是提供類似管理功能的工具的示例。
我對線程的了解有限,我正在尋找有關如何完成類似於以下內容的指示:
用戶連接到管理端口(telnet remote.host 12111),並發出“ SET LOGGING DEBUG”或“ STOP SERVICE”。
我的困惑與我如何在線程之間共享數據有關。 如果該服務是在例如thread-1上啟動的,我如何從該線程訪問數據?
另外,提供此類功能的python應用程序列表也會有很大幫助。 為了重用他們的想法,我很樂意瀏覽代碼。
python包括一些多線程服務器( SocketServer
, BaseHTTPServer
, xmlrpclib
)。 您可能還想看看Twisted,它是一個強大的網絡框架。
最簡單的起點可能涉及Python的xmlrpclib。
關於線程,所有線程都可以讀取Python程序中的所有數據。 一次只能有一個線程可以修改任何給定的對象,因此諸如列表和字典之類的基元將始終處於一致狀態。 涉及多個原語的數據結構(即類對象)將需要多加注意。 在線程之間進行協調的最安全方法是通過Queue.Queue之類的方法在線程之間傳遞消息/命令。 這並不總是最有效的方法,但是它不容易出現問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.