Posso accedere alle quadro di Datastore delle altre mie applicazioni di Google App Engine

Come sappiamo, nel motore di Google App, per ogni account di posta elettronica registrato, siamo autorizzati a realizzare 10 applicazioni. Ora, ho bisogno di condividere le entity framework tra le applicazioni. È ansible? Se sì, come viene implementato?

No, questo non può essere fatto. Tuttavia, come sottolinea Nick Johnson , puoi usare remote_api per fare ciò che ti serve.

Sei sicuro di aver davvero bisogno di farlo? Non dimenticare, puoi avere più versioni di un’applicazione in esecuzione sullo stesso datastore. Solo 1 versione dell’app è il tuo “predefinito” e ottiene il tuo nome di dominio non appspot.com, ma puoi avere codebase completamente diversi in esecuzione sullo stesso archivio dati / memcache indirizzabile con .. appspot.com

Non so se questo soddisfi i tuoi bisogni ma ho pensato di buttarlo là fuori.

Puoi farlo utilizzando l’accesso all’API Cloud Datastore. Fino ad ora, non posso essere in grado di farlo usando la libreria ndb.

Questo è il codice (Python) nella tua app attuale:

 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) 

cambia semplicemente “otherAppName” con il nome breve dell’altra app App Engine di cui si desidera accedere al datastore. Cambia “Entità” con il nome del modello a cui vuoi accedere. Ricordarsi di concedere l’accesso a yourCurrentApp nell’altroNameApp (menu IAM nella console cloud), impostare le autorizzazioni su [email protected] per accedere al datastore / progetto

In questo modo otterrete la risposta, dovete analizzarla json e otterrete un dettaglio di livello molto basso delle quadro del datastore dalla query (incluse chiavi, percorsi, nomi dei campi, tipi e valori per ogni campo e ogni riga del risultati). Se si ha ndb.JsonProperties, si riceverà un valore BLOB (DATABLOB nel prossimo codice di esempio), è necessario trasformarlo:

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

Spero che questo possa aiutarti. Sto aspettando la risposta usando ndb nel mio altro post: GAE NDB Datastore nuova funzionalità: accesso a quadro Datastore da altre app GAE

Verifica il PROBLEMA con GAE prima di implementarlo come indicato nella documentazione. Avevo cercato di implementare come dichiarato lì, ma con esito negativo a causa del problema. La tua richiesta all’API remota raggiungerà il server di destinazione ma non eseguirà nulla. Spero che il problema venga risolto presto.

C’è una nuova possibilità: se una delle applicazioni può essere “parte di” un’altra, puoi farla diventare un “modulo”.

Attivando l’accesso a Cloud Datastore nelle impostazioni di App Engine è ansible condividere un datastore con altre applicazioni di App Engine (o applicazioni di terze parti).