7

Ich versuche Google Cloud Datastore lokal zu testen. Meine Testschritte sind:Python: Speichern von Daten in Google Cloud-Datenspeicher-Emulator

  1. Daten Crawl mit Scrapy
  2. Daten speichern in der Cloud-Datenspeicher lokalen Emulator

ich alle Schritte unternehmen, um anschließend den lokalen Emulator

    zu verwenden
  1. lokalen Emulator starten: gcloud beta emulators datastore start
  2. lokale Umgebungsvariablen festlegen: gcloud beta emulators datastore env-init

jedoch in Python, wenn Sie den folgenden Befehl für den Zugriff Cloud-Datenspeicher verwenden, ist es immer die Daten speichern direkt auf Google Cloud, anstatt sie an die lokalen Emulatoren

#Imports the Google Cloud client library 
from google.cloud import datastore 

# Instantiates a client 
datastore_client = datastore.Client() 

sample_entry = some_data 

# Saves the entity 
datastore_client.put(sample_entry) 

Speichern Es scheint, wie kann man nicht geben sie die Bibliothek den lokalen Datenspeicher-Emulator zu verwenden, wie, was sie in ihrem Node.js Client bieten

var datastore = gcloud.datastore({ 
     apiEndpoint: "http://localhost:8380" 
}); 

Meine Frage ist: Wie kann ich die google Cloud Datastor python-Bibliothek frage lokalen Emulator zu verwenden, anstatt die die Verwendung c laut direkt

+1

Welchen Wert hat die Umgebungsvariable 'DATASTORE_EMULATOR_HOST' nach dem Aufruf von 'env-init'? –

+1

Während ich immer für lokales Testen und Entwickeln bin, ist die Google Cloud-Umgebung so hoffnungslos verschachtelt, dass ich definitiv ihre Plattform-Emulationspakete nicht empfehlen würde. Bugs wie diese, sowie Inkonsistenzen im Verhalten mit der tatsächlichen Einsatzumgebung, machen es zu einem Kopfschmerz, den es nicht wert ist; es sei denn, es gibt einen Grund, warum Sie das nicht können, würde ich vorschlagen, ein Staging-Projekt nur in der Cloud-Umgebung zu verwenden. – kungphu

+0

Wahrscheinlich möchten Sie die Einrichtung Ihres Emulators anhand der hier beschriebenen Schritte noch einmal überprüfen: https://cloud.google.com/datastore/docs/tools/datastore-emulator –

Antwort

0

Sie müssen eval $(gcloud beta emulators datastore env-init).

gcloud beta emulators datastore env-init gibt nur die Befehle aus, die die erforderlichen Umgebungsvariablen festlegen.