【问题标题】:python streaming TCP server with RPC带有 RPC 的 python 流式 TCP 服务器
【发布时间】:2010-06-17 06:28:39
【问题描述】:

我用 python 编写了一个小的流式 mp3 服务器。到目前为止,它所做的只是接受一个 ServerSocket 连接,并开始使用 socket.send() 将其队列中的所有 mp3 数据流式传输到请求。我已经实现了这一点,以便在流冰元数据中分块,因此播放歌曲的名称会显示在客户端中。

我想将播放列表管理添加到服务器,以便我可以操作正在运行的服务器的播放列表。我有一个模糊的想法,xmlrpclib 适合这样做,但我对两件事感到困惑:

  1. 在单个服务器和单个端口上集成 ICY 和 XMLRPC 是否可行/可取。

  2. 如何在流线程和播放列表之间共享状态,以及通过 xmlrpc 对其进行操作。

【问题讨论】:

    标签: python sockets xml-rpc


    【解决方案1】:

    如果您使用两个单独的端口,您的初始尝试可能会更容易,每个端口都有自己的服务器在单独的线程中运行。但是,从长远来看,管理线程之间的同步可能是一项烦人的任务。

    ICY 和 HTTP 非常相似,如果您已经在 SocketServer 之上实现了 ICY,您可能可以扩展 BaseHTTPServer.BaseHTTPRequestHandler 以响应同一端口上的 ICY 和 HTTP 请求。查看BaseHTTPRequestHandler.parse_request() 方法的标准库代码,并考虑如何在子类中覆盖它以实现人格分裂。

    另外,当您想使用这些类处理多个并发请求时,请查看SocketServer mixin classes

    【讨论】:

    • BaseHTTPRequestHandler 会接收 xmlrpc 吗?我知道 HTTP 可以用于所有这些,但我的问题是针对在同一服务器中使用两种不同的协议来实现的。是的,我需要同步。是的,我正在使用线程混合
    • 是的,我了解您在同一台服务器上使用两种协议的目标。正如我所说,这将需要一些工作。请注意,SimpleXMLRPCServer 基于与 BaseHTTPServer 相同的类层次结构。我的建议是阅读两者的代码,了解共享部分和差异,并提出您自己的子类,将所需的功能结合在一起。
    • 我已经实现了一个 BaseHTTPServer 来处理 ICY 和 XML RPC。感谢您的指点。关于如何为这个野兽实现共享状态的任何指针?
    • 我认为如果您将其作为一个新问题提出来,您可能会得到更多回复。恭喜你取得进步!
    猜你喜欢
    • 2022-01-14
    • 2010-12-15
    • 2010-12-07
    • 1970-01-01
    • 2017-12-23
    • 2012-12-21
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多