国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

AsyncHTTPClient和requests庫為什么不關閉連接?

2019-11-09 17:31:07
字體:
來源:轉載
供稿:網友

轉自:https://www.zhihu.com/question/38614659

測試報告發現網絡鏈接沒有關閉。后來發現是由于復用了asynchttpclient,所以一直沒有關閉連接。

摘自知乎

之前一段時間,一直在用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.如果不關,我的服務長期這樣跑著,總有一天會大量內存泄露吧?

作者:彭泉鑫鏈接:https://www.zhihu.com/question/38614659/answer/77237485來源:知乎著作權歸作者所有,轉載請聯系作者獲得授權。HTTPClient對象銷毀的時候,會自動關閉連接,這是寫在__del__中的tornado/httpclient.py at c4183b86890ffadbdb23fd7beac756c7990a035e · tornadoweb/tornado · GitHubAsyncHTTPClient也有close方法根據官方的文檔:close()This method is not needed in normal use due to the way that AsyncHTTPClient objects are transparently reused. close() is generally only necessary when either theIOLoop is also being closed, or the force_instance=True argument was used when creating theAsyncHTTPClient.該方法通常是不會用到的,因為AsyncHTTPClient對象會自動被復用(對用戶是透明的)。只有在IOLoop也被關閉,或者創建的時候設置了 force_instance=True,才有必要去用它。實際上,在IOLoop關閉的時候,它會自動被回收。1.我在tornado的http客戶端,和requests庫中,如何關閉它們?一般情況下不用手動關閉,對象銷毀的時候(或者IOLoop關閉的時候)會自動關閉連接2.是否是因為本質上,這兩個客戶端在關閉方式上就是不同的。不是,底層都是一樣的HTTP連接,只不過另一個使用起來是異步的(通過協程的方式)3.如果不關,我的服務長期這樣跑著,總有一天會大量內存泄露吧?大量無用的連接用完不釋放,必然會導致內存泄漏,但你不用擔心, 因為在tornado和requests里這些HttpConnection會被自動回收編輯于 2015-12-17


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柘荣县| 嘉禾县| 黄山市| 岳阳县| 白玉县| 始兴县| 晋宁县| 封丘县| 盱眙县| 南丰县| 夏津县| 西充县| 色达县| 都江堰市| 阿鲁科尔沁旗| 来安县| 临城县| 万宁市| 石景山区| 四会市| 张北县| 贞丰县| 木兰县| 石渠县| 碌曲县| 黄骅市| 高阳县| 阳原县| 青海省| 康定县| 聊城市| 陈巴尔虎旗| 林口县| 阿荣旗| 广宁县| 白城市| 望奎县| 清河县| 九龙城区| 平凉市| 九龙城区|