Thanks !
On Friday, March 16, 2012 2:04:42 AM UTC+5:30, Jonathan Lundell wrote:
>
> On Mar 15, 2012, at 1:15 PM, Sushant Taneja wrote:
> > I have a tags table which will be available to all logged in users. The
> table has the following structure:
> >
> > db.define_table('META_TAG',
> > Field('tag','string',notnull=True),
> > Field('root_tag','string',notnull=True),
> > Field('active_ind','string',length=1,default='Y')
> > )
> >
> > This table will be rarely (once a month) updated via an administrative
> interface.
> > I read various web2py based examples and gae examples on using memcache.
> Each followed a different approach.
> > As per my understanding from appengine documentation, I have written the
> following helper function in a controller to use memcache:
> >
> > from google.appengine.api import memcache
> >
> > def get_tags():
> > """This function returns cached value for META_TAG table"""
> > tags = memcache.get("tags")
> > if not words:
> > words =
> db(db.META_TAG.active_ind=='Y').select(db.META_TAG.tag,db.META_TAG.root_tag)
> > memcache.add("tags",tags)
> > return tags
> > else:
> > return tags
> >
> > Will the above code ensure that the correct data is always available in
> the memcache ?
>
> You seem to be mixing the names 'words' and 'tags'.
>
> As a matter of style, I'd move the return outside the if/else.
>
> Don't forget to set the cache when you update the tags.
>
> It's best to test for 'is None', in case your cached object can
> legitimately evaluate to False (an empty list or string, for example). So
> more like:
>
> from google.appengine.api import memcache
>
> def get_tags():
> """This function returns cached value for META_TAG table"""
> tags = memcache.get("tags")
> if tags is None:
> tags =
> db(db.META_TAG.active_ind=='Y').select(db.META_TAG.tag,db.META_TAG.root_tag)
> memcache.add("tags",tags)
> return tags
>
>