关闭Python requests连接

7
import requests
requests.get(path_url, timeout=100)

在上述使用Python requests库的代码中,当requests.get运行完毕后,连接是否会自动关闭?如果没有关闭,我应该如何确保连接已关闭?
1个回答

7

是的,在get代码后面有一个session.close的调用。如果使用像PyCharm这样的合适的IDE,你可以跟踪get代码以查看发生了什么。在get中,存在对请求的调用:

return request('get', url, params=params, **kwargs)

request方法的定义中,执行session.close
点击此处链接,可见请求控制的调用。
# By using the 'with' statement we are sure the session is closed, thus we
# avoid leaving sockets open which can trigger a ResourceWarning in some
# cases, and look like a memory leak in others.
with sessions.Session() as session:
    return session.request(method=method, url=url, **kwargs)

谢谢@idjaw,如果我调用requests.get(),你的答案是否仍然适用? - user308827
2
是的。正如答案中所指定的那样,get调用会调用request('get'...,就像我答案中开始的那一行所说明的那样。如果你跟随我提供的链接,你实际上也会看到get方法以及它如何调用request的方式。 - idjaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接