2010-06-17 126 views
0

我已經寫了一個小流媒體MP3服務器在Python中。到目前爲止,它所做的只是接受一個ServerSocket連接,並使用socket.send()開始將其隊列中的所有mp3數據傳輸到請求。我已經實現了這個功能,以便在流媒體元數據中進行區塊化處理,因此播放歌曲的名稱會顯示在客戶端中。蟒蛇流RPC服務器與RPC

我想將播放列表管理添加到服務器,以便我可以操縱正在運行的服務器的播放列表。我有一個模糊的想法的xmlrpclib將是適合於這樣做,但我感到困惑的兩件事情:

  1. 是否有可能/最好ICY和XMLRPC整合在一臺服務器和一個端口上。

  2. 如何在流式線程和播放列表之間共享狀態,並通過xmlrpc對其進行操作。

回答

0

如果您使用兩個單獨的端口,每個端口都有自己的服務器運行在單獨的線程中,您的初始嘗試可能會更容易。然而,從長遠來看,管理線程之間的同步可能是一件煩人的事情。

ICY和HTTP非常相似,如果您已經在SocketServer上實現了ICY,則可能需要擴展BaseHTTPServer.BaseHTTPRequestHandler以響應同一端口上的ICY和HTTP請求。查看BaseHTTPRequestHandler.parse_request()方法的標準庫代碼,並考慮如何在分裂人格的子類中重寫它。

此外,當您想要使用這些類處理多個併發請求時,請看SocketServer mixin classes

+0

BaseHTTPRequestHandler會收到xmlrpc嗎?我知道HTTP可以用於所有這些,但我的問題是爲了在同一臺服務器上使用兩種不同的協議。是的,我需要同步。是的,我正在使用線程mixin – g33kz0r 2010-06-17 14:39:24

+0

是的,我瞭解您在同一臺服務器上使用兩種協議的目標。正如我所說,這將需要一些工作。請注意,SimpleXMLRPCServer基於與BaseHTTPServer相同的類層次結構。我的建議是閱讀兩者的代碼,瞭解共享的部分和差異,並提出自己的將所需功能綁定在一起的子類。 – 2010-06-17 16:44:55

+0

我已經實現了BaseHTTPServer來處理ICY和XML RPC。感謝您的指點。 任何指針如何實現這個野獸的共享狀態? – g33kz0r 2010-06-21 21:27:58