Сохранение значения appengine db Key в memcache - PullRequest
0 голосов
/ 31 августа 2011

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

Однако, поскольку Key являетсясоставной элемент, вы не можете переслать его как есть, и когда я пытаюсь восстановить ключ, значения не идентичны.

Каков наилучший подход для передачи ключа для ссылки на сущность в более позднее время?

entity_key = feed_entity.key()   
logging.info(entity_key) # produces a string like key value

# would like to save a way to reference the key later
memcache.set(entity_key.id_or_name(), some_piece_of_data);

# Will produce the error:
# Key must be a string instance, received datastore_types.Key.from_path
# (u'FeedEntity', u'My_Entity_Name', u'FeedEntity', 2L, _app=u'dev~test_app')

reconstructed_key = Key.from_path('FeedEntity', 'My_Entity_Name', 'FeedEntity', entity_key.id_or_name());
logging.info(reconstructed_key)
# Not the same value as entity_key

params = {"key": entity_key_string_value} # this would be ideal
task = taskqueue.Task(url='/feed_entity/list', params=params).add(queue_name="feed-gopher")

1 Ответ

2 голосов
/ 31 августа 2011

См. http://code.google.com/appengine/docs/python/datastore/keyclass.html#Key

Ключ может быть закодирован в строку путем передачи объекта Key в str() (или вызова метода __str__() объекта).Ключ со строковым кодированием - это непрозрачное значение, использующее символы, безопасные для включения в URL-адреса.Ключ со строковым кодированием можно преобразовать обратно в объект Key, передав его конструктору Key (закодированный аргумент).

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