pythongoogle-app-enginepython-memcached

Test if string is valid key prior to memcache.get()


Is there a function in Google App Engine to test if a string is valid 'string key' prior to calling memcache.get(key) without using db.get() or db.get_by_key_name() first?

In my case the key is being passed from the user's get request: obj = memcache.get(self.request.get("obj"))

Somehow I'd like to know if that string is a valid key string without calling the db first, which would defeat the purpose of using memcache.


Solution

  • That is probably the most efficient (and practical) way to determine if the key string is valid. The code is obviously performing that test for you before it attempts to retrieve the entity from memcache/datastore. Even better, Google will update that code if necessary.

    try:
        obj = memcache.get(self.request.get("obj"))
    except BadKeyError:
        # give a friendly error message here
    

    Also, consider switching to ndb. Performing a get() on a key automatically uses two levels of cache, local and memcache. You don't need to write separate code for memcache.