3

Каков правильный способ повторного использования подключений Python Requests в Django через несколько HTTP-запросов. Это то, что я делаю в настоящее время:Повторное использование соединений в Django с запросами Python

import requests 

def do_request(data): 
    return requests.get('http://foo.bar/', data=data, timeout=4) 

def my_view1(request) 
    req = do_request({x: 1}) 
    ... 

def my_view2(request) 
    req = do_request({y: 2}) 
    ... 

Итак, у меня есть одна функция, которая делает запрос. Эта функция вызывается в разных видах Django. Представления вызываются в отдельных HTTP-запросах пользователями. Мой вопрос: автоматически ли Python запрашивает reuse the same connections (через пул соединений urllib3)?

Или мне нужно сначала создать объект сеанса запросов для работы?

s = requests.Session() 

def do_request(data): 
    return s.get('http://foo.bar/', data=data, auth=('user', 'pass'), timeout=4).text 

И если да, должен ли быть создан объект сеанса в глобальной области видимости или он должен находиться внутри функции?

def do_request(data): 
    s = requests.Session() 
    return s.get('http://foo.bar/', data=data, auth=('user', 'pass'), timeout=4).text 

я могу иметь несколько запросов HTTP в то же время, поэтому решение должно электронной поточно ... Я новичок в пул соединений, так что я на самом деле не уверен, и просит документы Арен» Это обширно здесь.

ответ

3

Создайте сеанс, сохраните сеанс, передав его через функции и вернув его, или создайте объект сеанса на глобальном уровне или уровне класса, чтобы последнее состояние поддерживалось всякий раз, когда на него ссылаются. И это будет работать как шарм.

+0

Таким образом, я создаю отдельные запросы для каждого вызова функции. Итак, второй блок кода в моем вопросе - это фактически решение (s определено в глобальной области)? Конечно ... Я просто не знаю, как отлаживать/отслеживать это. –

+0

Да, вторым кодовым блоком является решение. –

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

  • Нет связанных вопросов^_^