我比较这两段代码:Python的请求库 - 奇怪的行为VS卷发
subprocess.call('curl -XGET http://localhost:81/proxy/bparc/my_key > /dev/null' ,shell=True)
VS
response = requests.get('http://localhost:81/proxy/bparc/my_key')
print len(response.text)
,第一个将始终在0.01秒运行英寸但是第二次有时会花费30秒,而其他时间则会少于0.01秒。
任何想法可能会发生什么?请求是否做了一些让事情放缓的事情?运行len不好吗?
运行'len'并不“坏”。它可能是相关的 - 也许'curl'一旦看到你不想输出就停止读数据,而'request'不能这样做,因为len(response.text)需要输出。但我不认为'curl'实际上是这样做的,所以... – abarnert
是的,requests.get步骤是即时的,所以我想它不会下载数据,直到您尝试访问它?我想知道是要求response.text导致它对数据进行一些处理。我不确定为什么只有特定的网址。 – Greg
正确; 'requests.get'基本上只读取一个数据包(除非它只需要响应头部分);访问'文本'下载一切。但除了下载之外,它所做的唯一处理就是将字节解码为unicode,这应该只需要很短的时间。 – abarnert