在Python下载时如何在HTTP连接中进行seek
我其实有两个问题在一起。首先,HTTP协议是否允许“寻址”?如果这个说法不太准确,我想表达的是:比如说,有一个文件可以通过HTTP请求在某个服务器上访问。这个文件的大小是2GB。我能否只用HTTP获取这个文件的最后1GB?如果可以的话,怎么在Python中实现?我问这个问题是因为我在考虑写一个Python脚本,通过并行连接下载同一个文件,然后把结果合并起来。
2 个回答
0
HTTP协议允许你请求某个资源的“字节范围”,这个功能在HTTP/1.1的规范中有说明。不过,并不是所有的服务器和资源都支持这种按范围获取的方式,有些可能会忽略这些请求头。如果你想了解更多,可以看看这个问题的回答,里面有一些示例代码可以参考。
1
HTTP协议定义了一种方式,让客户端可以请求资源的某一部分,具体内容可以查看这个链接:http://www.w3.org/Protocols/rfc2616/
因为所有的HTTP实体在HTTP消息中都是以字节序列的形式表示的,所以字节范围的概念对任何HTTP实体都是有意义的。(不过,并不是所有的客户端和服务器都需要支持字节范围操作。)
所以理论上,你可以指定一个范围头,告诉服务器你想要文件的哪一部分,但服务器可能会忽略这个请求。因此,你需要配置服务器以支持字节范围。
抱歉我不能提供代码示例,我从来没有用过Python,但这些信息应该足够让你入门。如果你需要进一步的帮助,请随时问我。