Ho codice che, in forma semplificata, si presenta così:Perdita di memoria utilizzando gen.engine del tornado
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()
quando l'eseguo l'occupazione di memoria continua ad aumentare nel corso del tempo, più o meno linearmente. Se, tuttavia, mi tolgo la gen.engine
nidificazione:
@gen.engine
def go_for_it():
while True:
r = yield gen.Task(client.fetch, 'http://localhost:8888/')
utilizzo della memoria rimane costante.
Sono riuscito a riprodurre il problema con diverse versioni di tornado 2, sia su Mac OS X che Linux. Qualche idea su quale potrebbe essere la causa di questo problema?
Sembra proprio la cosa. Lo testerà. Grazie! –
Testato e funziona. Brillante! –