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-----

Reply via email to