如何在Python中读取持续的HTTP流数据?
如何在Python中从HTTP流媒体服务器读取二进制流。我搜索了一下,有人说urllib2可以做到,但有阻塞问题。还有人建议使用Twisted框架。
我有几个问题:
如果只是一个后台读取数据的流客户端,我可以忽略urllib2造成的阻塞问题吗?
如果urllib2跟不上流媒体服务器,会发生什么?数据会丢失吗?
如果流媒体服务器在获取数据之前需要通过GET或POST发送一些参数进行用户认证,urllib2能做到吗?
我在哪里可以找到一些关于urllib2和Twisted的流客户端示例?
谢谢。
杰克
1 个回答
6
为了克服urllib2自带的缓存问题,你可以这样做:
import socket
socket._fileobject.default_bufsize = 0
其实是socket._fileobject
在底层进行缓存。虽然数据不会丢失,但如果使用默认的缓存设置(每次8192字节),数据可能会被分成很多小块,这样不太适合实时流媒体的需求(完全去掉缓存可能会影响性能,但你可以尝试使用更小的数据块)。
关于Twisted,可以查看twisted.web2.stream以及那里的许多链接。