It will work if you setup gae memcache and point cache.ram to it. It
is explained in the book in the GAE section

On Aug 11, 7:45 am, howesc <[email protected]> wrote:
> i thought that the query caching like:
>   db(query).select(cache=...)
> was not supported in web2py on GAE?  did i miss a detail somewhere?
>
> since i thought it was not supported i have not yet tried to use it or
> clear it.  sorry.
>
> cfh
>
> On Aug 8, 11:51 pm, Jérémie <[email protected]> wrote:
>
> > Hello everyone,
>
> > First of all, thank you Massimo and all the contributors for this
> > great framework and all the documentation and support.
> > I am kind of new on web2py and i am trying to use cache on Google App
> > Engine.
>
> > Thanks to Robin's contribution (gae_memcache.py), i can use cache.ram
> > on GAE but keep on using the same syntax cache.ram).
> > Yet, i tried to cache some database request and to clear cache when
> > the user updated the database with new or edited record.
>
> > Here is the code i used (as i am quite also new to Python, let me know
> > if some part of my code is not "Pythonic" or "Web2py-ic").
>
> > Caching the request (i call the same function for 3 databases):
>
> > def getdata(database, bHidden = False):
> >     """ General query for getting records in a database """
> >     #check if hidden records are wanted
> >     if bHidden:
> >         query = (db[database].id>0)&(db[database].hidden==False)
> >     else:
> >         query = (db[database].id>0)
> >     #query data and returns a dict
> >     records = db(query).select(orderby=db[database].position,
> > cache=(cache.ram,3600))
> >     return dict([(row.id, row) for row in records])
>
> > When user adds a new record (for example), i want to clear the cache :
>
> > def new_record():
> >     """ Ajax call for creating a record and returning the new id """
> >     #Get the parameters posted by the script
> >     database = request.vars.db
> >     #Update database
> >     id = db[database].insert()
> >     #Clear cache
> >     cache.ram.clear(db._uri + '.*FROM ' + database + ' WHERE.*')
> >     return int(id)
>
> > This works well with sqlite database but doesn't work with GAE.
> > (of course, because, there is no "clear" method in gae_memcache.py)
> > Actually, there is no 'storage' attribute when using memcache on GAE.
>
> > Here are my questions :
> > 1. Is there any method or attribute similar to 'storage' for memcache
> > on GAE ? And could it be implemented in gae_memcache.py ?
> > 2. Am i doing this all wrong ? Should i better cache each dict
> > individually with memcache ?
> > 3. Should i handle this in a completely different way ?
>
> > Let me know i am not clear enough,
> > Thanks for your help,
>
> > Regards,
>
> > --
> > Jérémie

Reply via email to