【发布时间】:2012-11-15 18:23:58
【问题描述】:
我的代码简化后如下所示:
from tornado import gen, httpclient, ioloop
io_loop = ioloop.IOLoop.instance()
client = httpclient.AsyncHTTPClient(io_loop=io_loop)
@gen.engine
def go_for_it():
while True:
r = yield gen.Task(fetch)
@gen.engine
def fetch(callback):
response = yield gen.Task(client.fetch, 'http://localhost:8888/')
callback(response)
io_loop.add_callback(go_for_it)
io_loop.start()
当我运行它时,内存占用量随着时间或多或少地线性增加。但是,如果我删除了 gen.engine 嵌套:
@gen.engine
def go_for_it():
while True:
r = yield gen.Task(client.fetch, 'http://localhost:8888/')
内存使用量保持不变。
我已经设法在 Mac OS X 和 Linux 上使用不同版本的 tornado 2 重现了这个问题。有什么想法可能是导致此问题的原因吗?
【问题讨论】:
标签: python asynchronous memory-leaks tornado