之前一段时间,一直在用 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.如果不关,我的服务长期这样跑着,总有一天会大量内存泄露吧?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.