Python Dev Appserver を Google App Engine 1.7.6 (Python 2.7 を使用) に更新した後、memcache ビューアーで問題が発生しました。
memcache が更新されていないか、読み取れないようです。アプリ エンジンの 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
更新: Google\google_appengine\google\appengine\tools\devappserver2\admin\memcache_viewer.py の memcache_viewer.py ファイルに "import pickle" を追加しました (これはバグですか??)
memcache キーを入力すると、memcache キー入力フィールドの下に次のエラーが表示されます: ユーザーのフェッチ中にエラーが発生しました: キャッシュから値を取得できませんでした: メインという名前のモジュールはありません
事前に感謝します。