在多个HTTP请求中重用Django中Python Requests个连接的正确方法是什么。这就是我目前正在做的事情:
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连接池)?
或者我是否必须先创建一个Requests会话对象才能使用?
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请求,因此解决方案需要线程安全...我是连接池的新手,所以我真的不确定并且请求文档不是这里很广泛。
答案 0 :(得分:3)
创建会话,通过传递函数并返回它来保持会话,或者在全局级别或类级别创建会话对象,以便在引用时保持最新状态。它会像魅力一样发挥作用。