首页 > tornado的AsyncHTTPClient和requests库为什么不关闭连接?

tornado的AsyncHTTPClient和requests库为什么不关闭连接?

之前一段时间,一直在用tornado的异步客户端。

http_client = AsyncHTTPClient()
response = yield http_client.fetch(url, method=‘POST’, body=data)
response.body…..

但是从来没写过:
http_client.close()这样的代码。

类似的,同步的阻塞请求,我一般使用python的requests库:

response = requests.post(url, body)
response.content

但是也没有调用过类似close()的方法,

按理来说,数据库连接,文件句柄,网络连接,这些非托管资源,不是都应该手动去关闭的么?我记得比较“低级”的http库确实会调用关闭:
HTTPConnection.close(),

那么我的问题是

1.我在tornado的http客户端,和requests库中,如何关闭它们?
2.是否是因为本质上,这两个客户端在关闭方式上就是不同的。
3.如果不关,我的服务长期这样跑着,总有一天会大量内存泄露吧?


连接AsyncHTTPClient已经帮你关闭了,你获得的response就是服务器返回的所有信息。

其他语言中之所以需要关闭,是因为它们通常只负责帮你创建连接,需要你自己创建请求、发送数据、处理应答、读取数据、当然还有相关异常,最后一切结束后关闭连接。

AsyncHTTPClient是更高级的封装,你只需要关注发送什么,然后中间过程全部由AsyncHTTPClient帮你完成,最后你去拿数据即可。

【热门文章】
【热门文章】