我比較這兩段代碼: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