如何加速HTTP请求

时间:2011-02-26 09:08:24

标签: python http urllib2

我需要获取json数据,我正在使用urllib2:

request = urllib2.Request(url)
request.add_header('Accept-Encoding', 'gzip')
opener = urllib2.build_opener()
connection = opener.open(request)
data = connection.read()

但是虽然数据不是很大但是太慢了 有没有办法加快速度?我也可以使用第三方库。

4 个答案:

答案 0 :(得分:5)

Accept-Encoding:gzip表示如果服务器已准备好先发送,则客户端已准备好gzip编码内容。请求的其余部分沿着套接字进入操作系统TCP / IP堆栈,然后进入物理层。

如果服务器支持ETag,那么您可以发送If-None-Match标头以确保内容未更改并依赖缓存。一个例子是given here

您无法对的客户端做很多事情来提高您的HTTP请求速度。

答案 1 :(得分:2)

你在这里依赖于许多不同的东西,可能不在你的控制范围内:

  1. 连接的延迟/带宽
  2. 服务器连接的延迟/带宽
  3. 加载服务器应用程序及其各个进程
  4. 第2项和第3项可能是问题所在,你无法做多少。内容是否可以缓存?这取决于您自己的应用程序需求和从服务器返回的HTTP标头(例如ETags,Cache-Control,Last-Modified)。服务器可能每天只更新一次,在这种情况下,您最好每小时只请求一次数据。

答案 2 :(得分:0)

urllib不太可能出现问题。如果您遇到网络问题和性能问题:请考虑使用Wireshark等工具来调查网络级别。我非常怀疑这与Python有任何关系。

答案 3 :(得分:0)

如果您要提出大量请求,请查看线程。有大约10名工人提出请求可以加快速度 - 如果他们中的一个需要太长时间来建立连接,你就不会停下来。