I think it should help :
http://appengine-cookbook.appspot.com/recipe/decorator-to-getset-from-the-memcache-automatically/?id=ahJhcHBlbmdpbmUtY29va2Jvb2tyngELEgtSZWNpcGVJbmRleCJAYWhKaGNIQmxibWRwYm1VdFkyOXZhMkp2YjJ0eUdnc1NDRU5oZEdWbmIzSjVJZ3hOWlcxallXTm9aU0JCVUVrTQwLEgZSZWNpcGUiQWFoSmhjSEJsYm1kcGJtVXRZMjl2YTJKdmIydHlHZ3NTQ0VOaGRHVm5iM0o1SWd4TlpXMWpZV05vWlNCQlVFa00xDA

On Sep 9, 2:16 am, Robert Kluin <[email protected]> wrote:
> You do not ever pass the arguments to "get_data_callback."  You need to do
> something more like:
>
> class MC():
>   �...@staticmethod
>    def get( key, get_data_callback, **kwargs):
>        data_set = memcache.get( key )
>        if data_set == None:
>            data_set = get_data_callback(**kwargs)
>            memcache.set( key, data_set )
>        return data_set
>
> and:
>
> def get_user( id ):
>    return MC.get( key, lambda id: DB.get_user( id ),id=id )
>
> Good luck.
>
> Robert
>
> On Mon, Sep 7, 2009 at 4:25 PM, (jpgerek) <[email protected]> wrote:
>
> > Hi, I'm new with python and I having problems to implement the typical
> > memcache pattern.
>
> > I wan't to make a decorator of the most common memcache pattern so I
> > don't have to implement the logic everytime. My intention is having a
> > function that receives the key to get and a callback with the
> > datastore gets, in case the memcache key expires, it's evicted or
> > whatever.
>
> > This is what I have now:
>
> > class MC():
> >   �...@staticmethod
> >    def get( key, get_data_callback ):
> >        data_set = memcache.get( key )
> >        if data_set == None:
> >            data_set = get_data_callback()
> >            memcache.set( key, data_set )
> >        return data_set
>
> > I'm having problems with the callback when some params are required.
> > For instance:
>
> > class DB():
> >   �...@staticmethod
> >    def get_user( id ):
> >          return User().all().filter('id =', id').fetch(1)
>
> > def get_user( id ):
> >    return MC.get( key, lambda id: DB.get_user( id ) )
>
> > The error I get when I call 'get_user(1)' is something like:
>
> > TypeError: <lambda>() takes exactly 1 argument (0 given)
>
> > Though it works in this case:
>
> > def get_user_one():
> >     return User().all().filter('id = 1').fetch(1)
>
> > It seems to be something with the params, they are lost, could it be
> > solved with closures? other approach?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to