class queryFactory(object):
def __init__(self, request, sql,params):
self.request=request
self.sql=sql
self.params=params
def run_it(self):
def getQuery():
return dbpool.runQuery(self.sql, self.params)
def onResult(data):
self.request.write("done")
self.request.finish()
d = getQuery()
d.addCallback(onResult)
return NOT_DONE_YET
我从我的 render_POST 创建了上面的类并返回了它的实例的 run_it 方法
但是,当 self.sql 查询返回内存使用量达到 500mb 的大量数据时,我注意到内存永远不会返回给操作系统,进程只会保留它,直到我重新启动应用程序。我什至在 onResult 里面做了一个 gc.collect() 没有运气。
为什么会这样?
注意:我必须从 onResult 中删除其他代码,这样我才能缩小范围,因为我真的没有使用传递给 onResult 的“数据”。