Могу ли я получить доступ к объектам Datastore других моих приложений Google App Engine - PullRequest
9 голосов
/ 22 января 2012

Как мы знаем, в движке Google App для каждой зарегистрированной учетной записи электронной почты нам разрешено подавать 10 заявок. Теперь мне нужно разделить сущности среди приложений. Это возможно? Если да, то как это реализовано?

Ответы [ 6 ]

4 голосов
/ 25 января 2012

Вы уверены, что вам действительно нужно это сделать?Не забывайте, что вы можете иметь несколько версий приложения, работающего с одним и тем же хранилищем данных.Только 1 версия приложения является вашей «по умолчанию» и получает ваше доменное имя не appspot.com, но вы можете иметь совершенно разные кодовые базы, работающие с одним и тем же хранилищем данных / memcache с адресом ..appspot.com

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

4 голосов
/ 22 января 2012

Нет, этого нельзя сделать. Однако, как указывает Ник Джонсон , вы можете использовать remote_api , чтобы делать то, что вам нужно.

3 голосов
/ 17 августа 2016

Вы можете сделать это, используя доступ к API Cloud Datastore. До сих пор я не могу сделать это с помощью библиотеки ndb.

Это код (Python) в вашем текущем приложении:

from google.appengine.api import app_identity

scope = "https://www.googleapis.com/auth/datastore"
authorization_token, _ = app_identity.get_access_token(scope)
headers = {'Content-Type': 'application/json', "Authorization": "Bearer " + authorization_token}
payload = {"gqlQuery": { "queryString": "SELECT * FROM Entities"} }
url = "https://datastore.googleapis.com/v1beta3/projects/otherAppName:runQuery"

result = urlfetch.fetch(url, payload=json.dumps(payload), method=urlfetch.POST,
     follow_redirects=True, headers=headers)

просто замените «otherAppName» коротким именем другого приложения App Engine, к хранилищу данных которого вы хотите получить доступ. Замените «сущности» на имя модели, к которой вы хотите получить доступ. Не забудьте предоставить доступ к yourCurrentApp в otherNameApp (меню IAM в облачной консоли), установите разрешения для yourcurrentapp@appspot.gserviceaccount.com для доступа к хранилищу данных / проекту

В результате вы получите ответ, вы должны json-разобрать его, и вы получите очень низкий уровень детализации сущностей хранилища данных из запроса (включая ключи, пути, имена полей, типы и значения для каждого поля и каждого ряд результатов). Если у вас есть ndb.JsonProperties, вы получите значение BLOB (DATABLOB в следующем примере кода), вы должны преобразовать его:

from google.appengine.ext.bulkload import transform 
b = json.loads(transform.blobproperty_from_base64(DATOBLOB))

Надеюсь, это поможет вам. Я жду ответа, используя ndb в моем другом посте: Новая функция GAE NDB Datastore: доступ к сущностям хранилища данных из другого приложения GAE

0 голосов
/ 09 сентября 2014

Путем активации доступа к облачному хранилищу данных в настройках App Engine можно делиться хранилищем данных с другими приложениями App Engine (или сторонними приложениями).

0 голосов
/ 15 августа 2013

Появилась новая возможность: если одно из приложений может быть «частью» другого, вы можете сделать его «модулем».

0 голосов
/ 23 января 2012

Проверьте ВЫПУСК с GAE, прежде чем приступить к реализации, как указано в документации. Я пытался реализовать, как указано там, но безуспешно из-за проблемы. Ваш запрос к удаленному API достигнет целевого сервера, но ничего не выполнит. Надеюсь, что проблема будет решена в ближайшее время.

...