2010-12-08 43 views
4

現在我這樣做:(Python3,urllib的)如何生存在HTTP/1.1使用Python的urllib

url = 'someurl' 
headers = '(('HOST', 'somehost'),/ 
      ('Connection', 'keep-alive'),/ 
      ('Accept-Encoding' , 'gzip,deflate')) 
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor()) 
for h in headers: 
    opener.addheaders.append(x) 
data = 'some logging data' #username, pw etc. 
opener.open('somesite/login.php, data) 

res = opener.open(someurl) 
data = res.read() 
... some stuff here... 
res1 = opener.open(someurl2) 
data = res1.read() 
etc. 

正在發生的事情是這樣的;我保持登錄狀態(如果我沒有登錄,我正在獲取一些不可用的內容),但是我認爲每個請求之間的連接正在斷開。opener.open;

我認爲,因爲連接速度很慢,每次都有新的連接。兩個問題:

a)如何測試連接是否處於活動狀態/正在死亡
b)如何使其在其他URL的請求之間保持活動狀態?

照顧:)

+0

a)嗅探流量將是檢查您是否保持活力的微不足道的方法。確保服務器也支持keepalive。至於b),至少在python2.x中有一種方法可以指定一個可以存活的處理程序,但它似乎並不是默認的。 – Robert 2010-12-08 08:12:12

回答

1

這將是一個非常延遲的答案,但:

您應該看到urllib3。它適用於Python 2.x,但當您看到自己的README文檔時您會明白。

是的,urllib的默認情況下不保持連接活着,我現在正在實施urllib3爲Python 3將留在我的toolbag :)

0

只是,如果你還不知道,蟒蛇,請求提供保持活着的功能,感謝urllib3。