google-app-engine - gae - google app engine tutorial español
¿Puedo acceder a las entidades de Datastore de mis otras aplicaciones de Google App Engine? (6)
Como sabemos, en el motor de la aplicación de Google, por cada cuenta de correo electrónico registrada, podemos hacer 10 aplicaciones. Ahora, necesito compartir entidades entre las aplicaciones. es posible? En caso afirmativo, ¿cómo se implementa?
Verifique el PROBLEMA con GAE antes de implementarlo como se indica en la documentación. Intenté implementarlo como se dijo allí pero con un fallo debido al problema. Su solicitud a la API remota llegará al servidor de destino pero no realizará nada. Espero que el problema se resuelva pronto.
¿Estás seguro de que realmente necesitas hacer esto? No lo olvide, puede tener múltiples versiones de una aplicación ejecutándose contra el mismo almacén de datos. Solo una versión de la aplicación es su "predeterminado" y obtiene su nombre de dominio que no sea appspot.com, pero puede tener bases de código completamente diferentes ejecutándose contra el mismo datastore / memcache direccionable con ..appspot.com
No sé si esto satisface tus necesidades, pero pensé que lo tiraría allí.
Hay una nueva posibilidad: si una de las aplicaciones puede ser "parte de" otra, puede hacer que sea un "módulo".
Al activar el acceso al Cloud Datastore en la configuración de App Engine, es posible compartir un almacén de datos con otras aplicaciones de App Engine (o aplicaciones de terceros).
No, esto no se puede hacer. Sin embargo, como señala Nick Johnson , puede usar remote_api para hacer lo que necesita.
Puedes hacerlo usando el acceso API de Cloud Datastore. Hasta ahora, no puedo hacerlo usando la biblioteca ndb.
Este es el código (Python) en su aplicación actual:
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)
simplemente cambie "otherAppName" con el nombre abreviado de la otra aplicación de App Engine cuyo almacén de datos desea acceder. Cambie "Entidades" con el nombre del Modelo al que desea acceder. Recuerde dar acceso a su aplicación actual en la otra aplicación de nombre (menú de IAM en la consola de la nube), establezca permisos en [email protected] para acceder al almacén de datos / proyecto
En el resultado obtendrá la respuesta, debe analizarla en tiempo real y obtendrá un detalle de nivel muy bajo de las entidades del almacén de datos de la consulta (incluidas claves, rutas, nombres de campos, tipos y valores para cada campo y cada fila del resultados). Si tiene ndb.JsonProperties, recibirá un valor BLOB (DATABLOB en el siguiente código de ejemplo), debe transformarlo:
from google.appengine.ext.bulkload import transform
b = json.loads(transform.blobproperty_from_base64(DATOBLOB))
Espero que esto le pueda ayudar. Estoy esperando la respuesta usando ndb en mi otra publicación: GAE NDB Datastore nueva característica: Acceda a las entidades de Datastore desde otra aplicación de GAE