3

Google App Engine の柔軟な Python 3 環境と Cloud Datastoreを試しています。ローカルでテストする場合、これは (一般的に) Gunicorn などでアプリを実行し、 から Datastore API にアクセスすることを要求しますgcloud.datastore。例えば:

import gcloud.datastore as g_datastore
ds = g_datastore.Client(...)
entity = datastore.Entity(key=ds.key(...))
ds.put(entity)

ローカルで (開発モードで) 実行すると、エンティティの状態は実行間で保持されます。私の人生では、それらがどこに保存されているのか、または作成/アクセス後に作成された開発データストアをクリアする方法を理解できませんgcloud.datastore.Client。私が知る限り、ndb経由で実行するときに使用する場所と同じ場所は使用しませんdev_appserver.py

私はこのようなものでそれを理解しようとしました(OS Xを実行している場合):

$ touch foo
$ GCLOUD_PROJECT=... python .../main.py
 * Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger pin code: ...
127.0.0.1 - - [04/Jul/2016 10:36:01] "GET / HTTP/1.1" 200 -
...
^C
$ sudo find /private/tmp /var/db /var/tmp ~/.config/gcloud ~/Library -newer foo
...
# nothing meaningful

ソースコードを調べてみたところ、次のような単体テストのクリーンアップコードが見つかりましたpip install gcloud。そして(私にとってはもっと重要です)b)そのものが実際にどこに保存されているかについての手がかりを与えません。

Gunicornの実行中にこれを試してみました:

$ sudo lsof | grep -Ei 'python'
# nothing meaningful

gcloud.datastoreローカルで (開発モードで) 実行する場合、foo は実行間の状態をどこに保存しますか?!

4

1 に答える 1

5

少年は私がばかげていると感じますか!デフォルトでgcloud.datastoreは、... (それを待つ) ... Google Cloud Datastore に接続します。本物。なぜ違うと思ったのかわかりません。

gcloudローカル構成はすでにアカウントの資格情報を使用するようにプロビジョニングされておりGCLOUD_PROJECT、ローカル インスタンスを実行するときに環境を設定していたため、すぐにはわかりませんでした。おっと!(ローカル ディスクに変更が見られなかったのも不思議ではありません!)

そのため、「dev」Cloud Datastore をローカルで実行する場合は、Datastore エミュレータを実行する必要があります。これは、実行するよりも複雑です(実行することでほとんどの処理が行われます。たとえば、アプリのデータストア呼び出しからファイルの値を推測する方法については、このワークフローを参照してください)。コマンドにオプションを指定しない場合、デフォルトのローカル ストレージの場所は.dev_appserver.pyindex.yaml--data-dirstart~/.config/gcloud/emulators/datastore/...

質問を削除するのではなく、私のような麻痺した頭蓋骨への警告/説明としてここに残します.

于 2016-07-05T22:39:15.910 に答える