1
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 的“数据”。

4

0 回答 0