2016-07-02 3 views
0

У меня вопрос о модуле python-запросов. Согласно документамСохранение в модуле python-запросов

спасибо urllib3, keep-alive на 100% автоматический в течение сессии! Любые запросы, которые вы делаете в ходе сеанса, будут автоматически использовать соответствующее соединение!

Мой пример кода выглядит следующим образом:

def make_double_get_request(): 
    response = requests.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 
    response = requests.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 

Но журнал я получаю говорит, что с каждым запросить новое соединение HTTP начинает:

INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url 
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None 
response text goes here 
INFO:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): url 
DEBUG:requests.packages.urllib3.connectionpool:"GET url HTTP/1.1" 200 None 
response text goes here 

Я делаю что-то не так? Посмотрев на пакеты с wirehark, кажется, что они на самом деле имеют живой набор.

ответ

2

Используйте Session() instance:

def make_double_get_request(): 
    session = requests.Session() 
    response = session.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 
    response = session.get(url=API_URL, headers=headers, timeout=10) 
    print response.text 

В requests верхнего уровня функции метода HTTP являются удобство API, который создает новый Session объект каждый раз, предотвращая повторное использование соединений.

Из документации:

Объект Session позволяет сохраняться определенные параметры через запросы. Он также сохраняет файлы cookie во всех запросах, сделанных из экземпляра сеанса, и будет использовать пул соединений urllib3.

Смежные вопросы