Подтвердить что ты не робот

Как получить список пространств имен в движке Google?

Я хотел бы сделать резервную копию всех пользовательских данных в хранилище данных. Мое приложение использует новую функцию пространства имен для обеспечения многопользовательской аренды для каждого пользователя (в соответствии с примером в документах).

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

4b9b3361

Ответ 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 для получения списка пространств имен. Вы должны вести запись тех, которые вы используете. Я использую специально для этого модель.