Как остаться в живых в HTTP/1.1, используя python urllib
Сейчас я делаю это: (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;
Я думаю, что из-за того, что соединение происходит очень медленно, и кажется, что каждый раз появляется новое соединение. Два вопроса:
а) Как проверить, действительно ли соединение остается живым / умирает?
б) Как сделать так, чтобы он оставался в живых между запросами других URL?
Береги себя:)
2 ответа
Это будет очень запоздалый ответ, но:
Вы должны увидеть urllib3. Это для Python 2.x, но вы поймете эту идею, когда увидите документ README.
И да, urllib по умолчанию не поддерживает соединения, теперь я реализую urllib3 для Python 3, чтобы он оставался в моей сумке с инструментами:)
Просто, если вы еще не знали, Python-запросы предлагают функцию поддержки активности благодаря urllib3.