David, please open a ticket here also:
https://code.google.com/p/web2py/issues/entry 2011/1/4 mdipierro <mdipie...@cs.depaul.edu>: > This is odd. I can reproduce the problem. What is even stranger is > that if I call blahstuff once the count doubles from 24 to 48 but if I > blahstuff more than once (even if with lower cache time) it does not > increase the counter more than 48. > > I also tried caching a lambda:repr(Blah()) as opposed to Blah and the > problem does not occur. > > Looks like when caching an instance it keep a copy in cache of the > entire environment, which includes db. > > I do not understand why that happens since there is not reference from > the cache.py code to the environment nor any reference from the Blah > class. > > Let' move this discussion to web2py-developers. If you are not already > there, please join. > > Massimo > > > On Jan 4, 12:10 pm, David Zejda <d...@atlas.cz> wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Hi :) >> >> You may check the issue even with the default simple application created >> by web admin. Simply add this to the default controller: >> >> class Blah(): >> def __init__(self): >> pass >> >> def blahstuff(): >> p = cache.ram('blahblah',Blah,time_expire=30) >> return dict(p=BEAUTIFY(p)) >> >> def guppy(): >> from guppy import hpy >> h = hpy() >> label='h.heap()' >> form = FORM(LABEL("Guppy code: "),INPUT(_name="code", _size='35', >> _value=label),INPUT(_type="submit", _value="Execute..")) >> if form.accepts(request.vars, session): >> heap = eval(request.vars.code) >> label = request.vars.code >> else: >> heap = h.heap() >> fullstack = h.heap().parts >> return dict(heap=PRE(heap), fullstack=PRE(BEAUTIFY(fullstack)), >> label=label, form=form) >> >> If you visit heapy() first time, the results contains: >> >> Partition of a set of 24 objects. Total size = 80448 bytes. >> Index Count % Size % Cumulative % Kind (class / dict of class) >> 0 24 100 80448 100 80448 100 dict of gluon.dal.Field >> >> Once you run blahstuff(), heapy() reports: >> >> Partition of a set of 48 objects. Total size = 160896 bytes. >> Index Count % Size % Cumulative % Kind (class / dict of class) >> 0 48 100 160896 100 160896 100 dict of gluon.dal.Field >> >> David >> >> mdipierro wrote: >> > can you show us the guppy stats before and after caching? without >> > caching any db object? >> > can you also email me the entire app code? >> >> > On Jan 4, 9:15 am, David Zejda <d...@atlas.cz> wrote: >> > Whenever in controller/model is the class declared, the same result. >> >> > Michele Comitini wrote: >> >>>> Try to put the Blah class in the global scope of the controller. Do >> >>>> you get same result? >> >> - -- >> David Zejda, Open-IT cz >> web development & serviceshttp://www.o-it.info >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG v1.4.9 (GNU/Linux) >> Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org >> >> iEYEARECAAYFAk0jYp0ACgkQ3oCkkciamVEyngCfeFLsLcFyo3+97O0wc0w/cbPM >> oI8AoLY5t0URVVk2+ehOFomsMAjZzlyv >> =0hmM >> -----END PGP SIGNATURE-----