我處理程序文件HTTPS與CurlAsyncHTTPClient
# -*- coding:utf-8 -*-
import sys
from tornado import gen, web, httpclient
url = "https://mdetail.tmall.com/templates/pages/desc?id=527485572414"
class SearchHandler(web.RequestHandler):
@gen.coroutine
def get(self):
async_client = httpclient.AsyncHTTPClient()
print sys.getrefcount(async_client) # The first time less than 10, then always bigger than 200
req = httpclient.HTTPRequest(url, "GET", headers=headers)
req_lists = [async_client.fetch(req) for _ in range(200)]
r = yield req_lists
print sys.getrefcount(async_client) # always bigger than 200
# The longer req_lists, the more memory will be consumed, and never decrease
配置文件
tornado.httpclient.AsyncHTTPClient.configure(client, max_clients=1000)
如果我的客戶是「tornado.curl_httpclient.CurlAsyncHTTPClient」,然後,當我訪問我的處理程序broswer ,htop顯示內存增加大約6GB,只要進程運行,內存使用永不減少
如果我設置範圍(200)到範圍(500)或更高,內存使用生長更高
如果我的漸變羣是無,存儲器勉強增加
我發現只有取https://將有內存問題
我該如何解決與CurlAsyncHTTPClient momory問題?
環境:
Ubuntu 16.10 x64
python2.7.12
Tornado 4.5.1
非常感謝,但我仍然不明白爲什麼只有**「https://」**請求消耗巨大的內存** CurlAsyncHTTPClient **,但**「http://」**請求不要 – zpoint
@zpoint正如我所說的,高內存使用似乎與libcurl使用的TLS後端(GnuTLS與OpenSSL)有關。當然,TLS僅用於HTTPS,而不用於純文本HTTP。 –
謝謝,我會嘗試最新版本的libcurl – zpoint