программа просмотра кэша памяти Google App Engine 1.7.6 (Python)

У меня возникли проблемы со средством просмотра кэша памяти после обновления сервера приложений Python Dev до Google App Engine 1.7.6 (с Python 2.7).

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

когда я очищаю кеш, все происходит как обычно, пока memcache не нужно будет снова читать...

Коэффициент попаданий и размер кэша памяти увеличиваются как обычно, значит, в кэше что-то есть. Также, когда я возвращаюсь к движку приложения 1.7.5, все работает нормально. Возможно, у кого-то еще была эта проблема?

Когда я ввожу ключ memcache, я получаю следующее:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1536, in __call__
    rv = self.handle_exception(request, response, e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1530, in __call__
    rv = self.router.dispatch(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\admin\admin_request_handler.py", line 80, in dispatch
    super(AdminRequestHandler, self).dispatch()
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.1\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\admin\memcache_viewer.py", line 145, in get
    values['value'], values['type'] = self._get_memcache_value_and_type(key)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\admin\memcache_viewer.py", line 74, in _get_memcache_value_and_type
    except (pickle.UnpicklingError, AttributeError, EOFError, ImportError,
NameError: global name 'pickle' is not defined

Я попытался включить «импортный рассол» в свой main.py, но это было напрасно.

Я включил несколько примеров своего кода, но, надеюсь, в этом нет необходимости. Я надеюсь, что это больше связано с обновлением движка приложения, чем с моим кодом...

некоторые из моих файлов main.py:

#import pickle
from google.appengine.api import memcache
from google.appengine.ext import db

и пример функции того, как я работаю с memcache:

def mc_get(key):
    a = memcache.get(key)
    if a:
        val = a
    else:
        val = None
    return val

def mc_set(key, val):
    memcache.set(key, val)

и если я хочу запросить пользователей в моей базе данных, я использую:

def get_users(update=False):
    mc_key = 'USERS'
    entries = mc_get(mc_key)
    if update or entries is None:
        a = User.all()
        logging.error('DB---Q - Users')
        entries = list(a)
        memcache.set(mc_key, entries)
    return entries

ОБНОВЛЕНИЕ: я добавил "import pickle" в файл memcache_viewer.py в Google\google_appengine\google\appengine\tools\devappserver2\admin\memcache_viewer.py (это ошибка??)

и теперь, когда я ввожу ключ memcache, я получаю следующую ошибку в поле ввода ключа memcache: Ошибка извлечения ПОЛЬЗОВАТЕЛЕЙ: Не удалось получить значение из кеша: нет модуля с именем main

Любая помощь будет принята с благодарностью, заранее спасибо.


person Emile Esterhuizen    schedule 01.04.2013    source источник
comment
Я пытался изменить файл memcache_viewer.py в C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\admin\memcache_viewer.py, но у меня проблемы с разрешениями... Однако мне трудно поверить, что обновление в 1.7.6 потребует от меня включения чего-то в один из исходных файлов, я не добавлял импортный рассол при использовании 1.7.5.   -  person Emile Esterhuizen    schedule 01.04.2013
comment
Это определенно ошибка. Это происходит, когда вы храните более сложные структуры (я думаю, объекты, но полностью не проверено). Я провел несколько простых тестов со строками и словарями memcached, и все работает отлично. Мне уже надоели все последние баги.   -  person kevin    schedule 03.04.2013
comment
Вы должны опубликовать это в системе отслеживания проблем Google App Engine – code.google.com/p/googleappengine. /проблемы/список   -  person kevin    schedule 03.04.2013
comment
Хорошо, круто, я опубликую это в системе отслеживания проблем Google App Engine, спасибо за вклад. Я играл с развернутым приложением, и оно довольно непостоянно, но до сих пор не нашел решения. Если есть решение выложу.   -  person Emile Esterhuizen    schedule 03.04.2013


Ответы (1)


Я перешел со старого API хранилища данных на NDB (что-то вроде рутинной работы по изменению кода). Автоматическое кэширование, кажется, решило проблему, это может указывать на то, что проблема была в моем коде, но все же не объясняет, почему все работало нормально при использовании механизма приложения 1.7.5, а не 1.7.6.

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

person Emile Esterhuizen    schedule 06.04.2013