I should add that one can always do
cache.ram('whetever',lambda: cache.ram.clear(), 5*60)
to clear all cache every 5 minutes. Clear also takes a regex and can be
used for partial cache clear.
cache.ram('whetever',lambda: cache.ram.clear(regex), 5*60)
cache.ram cannot clear cache automatically because it is not aware of how
much memory is being used. Yet if you use apache (and I I think uwsgi
also), the web server will automatically kill and re-spawn processes that
use too much memory.
On Sunday, 4 August 2013 17:42:09 UTC-5, Massimo Di Pierro wrote:
>
> If the query depends on user input than yes.
> select(cache=(...)) uses the SQL QUERY as key. If it is possible for the
> QUERY that you are caching to always be different because depends on user
> this input you have a memory leak. Actually more than that. You have a DoS
> vulnerability because a user can keep making queries thus exploiting the
> leak easily.
>
> You should only cache selects that do not depend on use input.
>
>
> On Sunday, 4 August 2013 16:55:08 UTC-5, Loïc wrote:
>>
>> Thank you Anthony.
>>
>> Maybe I missed a point in the book, but does memory leak with cache.ram
>> also applies to select caching?
>> For example when you do
>>
>> rows = db(query).select(cache=(cache.ram,3600),cacheable=True)
>>
>> Is there any way to specify the key, or to empty the cache after some
>> time?
>> What is the "correct" way to do?
>>
>>
>> Thank you
>>
>>
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.