【问题标题】:How to read continous HTTP streaming data in Python?如何在 Python 中读取连续的 HTTP 流数据?
【发布时间】:2010-12-08 13:44:56
【问题描述】:

如何在 python 中从 HTTP 流媒体服务器读取二进制流。我进行了搜索,有人说 urllib2 可以完成这项工作,但存在阻塞问题。有人建议使用 Twisted 框架。

我的问题是:

  1. 如果只是流式客户端在后台读取数据,可以忽略urllib2引起的阻塞问题吗?

  2. 如果 urllib2 跟不上流媒体服务器会怎样?数据会丢失吗?

  3. 如果流媒体服务器在检索数据之前需要通过 GET 或 POST 一些参数到服务器进行用户身份验证,这可以通过 urllib2 完成吗?

  4. 在哪里可以找到一些 urllib2 和 Twisted 的流客户端示例?

谢谢。

杰克

【问题讨论】:

    标签: python streaming client stream


    【解决方案1】:

    要击败 urllib2 的内在缓冲,您可以这样做:

    import socket
    socket._fileobject.default_bufsize = 0
    

    因为实际上是socket._fileobject 在下面缓冲。无论如何都不会丢失任何数据,但是使用默认缓冲(一次 8192 字节)数据可能最终会过度分块以用于实时流式传输(完全删除缓冲可能会损害性能,但您可以尝试更小的块)。

    对于 Twisted,请参阅 twisted.web2.stream 以及其中的许多链接。

    【讨论】:

    • 嗨,Alex,如何在 Python 中进行异步流处理?杰克
    • @jack,您可以使用_fileobject urllib2 返回(如上所述设置为非缓冲)和asyncore &c 模块,但我指出的扭曲方法非常优越,所以这就是我推荐的。
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2011-11-19
    • 2016-06-26
    • 2022-01-08
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多