App Engine: Есть ли хороший инструмент общего назначения для кэширования объектов хранилища данных? - PullRequest
3 голосов
/ 24 января 2012

Я смотрю на написание суперкласса для всех моих классов хранилища данных Google App Engine, который выглядит примерно так:

class MemcacheMixin(object):
    @classmethod
    def cache_get_by_id(cls, id, parent=None):
        if memcache.has_key(...):
            ...
    ...

class MyEntity(db.Model, MemcacheMixin):
    ...

obj = MyEntity.cache_get_by_id(...)

Идея состоит в том, что я почти всегда хочу кэшировать объекты хранилища данныхи я не хочу повторяться.Я предполагаю, что кто-то уже должен был удовлетворить эту потребность и написал универсальный инструмент для кэширования этого материала, который прекрасно интегрируется в работу классов хранилища данных.

Но я не нашел его.Любые рекомендации?

Ответы [ 2 ]

9 голосов
/ 25 января 2012

NDB (новый разработчик библиотеки хранилищ данных от Guido, включенный в SDK App Engine 1.6.1) имеет встроенные средства кэширования (memcache и memory).

См. документация для более подробной информации.

2 голосов
/ 24 января 2012

Что вы, вероятно, ищете, это декоратор памятки. Вот хороший, простой пример:

http://code.google.com/p/appengine-afterburner/source/browse/trunk/python/src/afterburner/experimental/memoize.py

Также связана с рекомендацией кэшировать буфер протокола, а не экземпляр модели, для производительности:

http://blog.notdot.net/2009/9/Efficient-model-memcaching

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...