Как остаться в живых в HTTP / 1.1, используя python urllib - PullRequest
4 голосов
/ 08 декабря 2010

Пока я делаю это: (Python3, 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.

Что происходит, вот это;

Я продолжаю получать gzipped ответы от сервера, и я остался в системе (я получаю некоторый контент, который недоступен, если я не вошел в систему), но я думаю, что связь разрывается между каждым запросом opener.open;

Я думаю, что из-за того, что соединение происходит очень медленно, и кажется, что каждый раз появляется новое соединение. Два вопроса:

a) Как проверить, действительно ли соединение остается в живых / умирает
б) Как сделать так, чтобы он оставался в живых между запросами других URL?

Береги себя:)

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Это будет очень запоздалый ответ, но:

Вы должны увидеть urllib3 .Это для Python 2.x, но вы поймете эту идею, когда увидите документ README.

И да, urllib по умолчанию не поддерживает соединения, сейчас я реализую urllib3 для Python 3, чтобыоставайся в моей сумке с инструментами:)

0 голосов
/ 10 июля 2013

Просто, если вы еще не знали, Python-запросы предлагают функцию поддержки активности благодаря urllib3.

...