Как получить список пространств имен в движке Google?
Я хотел бы сделать резервную копию всех пользовательских данных в хранилище данных. Мое приложение использует новую функцию пространства имен для обеспечения многопользовательской аренды для каждого пользователя (в соответствии с примером в документах).
Объемному загрузчику требуется пространство имен для каждого клиента для загрузки данных. Я не сохраняю список пользователей, поэтому я не могу создать пространства имен. Есть ли способ обнаружения всех используемых в настоящее время пространств имен?
Ответы
Ответ 1
Поскольку SDK 1.4.0 вы можете использовать Запросы метаданных:
from google.appengine.ext.db import metadata
for ns in metadata.get_namespaces():
print "namespace: '%s'" % ns.namespace_name
Для NDB импорт немного отличается:
from google.appengine.ext.ndb import metadata
Ответ 2
Существует также функция get_namespaces():
from google.appengine.ext.db import metadata
namespaces = metadata.get_namespaces()
get_namespaces() возвращает список объектов Namespace. В документах также отмечается, что "запросы метаданных, которые извлекают информацию об пространствах имен, видах и свойствах, обычно выполняются медленно".
Ответ 3
Использование ndb
from google.appengine.ext.ndb import metadata
all_namespaces = [ns for ns in metadata.get_namespaces()]
Использование datastore
Per Метаданные хранилища данных:
query = client.query(kind='__namespace__')
query.keys_only()
all_namespaces = [entity.key.id_or_name for entity in query.fetch()]
Ответ 4
Нет API для получения списка пространств имен. Вы должны вести запись тех, которые вы используете. Я использую специально для этого модель.