3

私はGoogle App Engine's flexible Python 3 environment and Cloud Datastoreで実験しています。ローカルでテストする場合は、Gunicornなどでアプリを実行し、gcloud.datastoreからDatastore APIにアクセスする必要があります(一般的に)。例:`gcloud.datastore`はどこでローカルのdev状態を保持しますか?それをクリアするには?

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

は、私はこのような何か(実行中の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 

私はソースコードを見てみました、とsome unit test cleanup codeが見つかりました:A)と一緒に配布されていませんがpip install gcloud; (私のためにもっと重要です)b)そのものが実際にどこに格納されているかについての手がかりはありません。

私もGunicornの実行中に、これを試してみた:

fooは(DEVモードで)ローカルに実行間 gcloud.datastoreストアの状態を実行しない
$ sudo lsof | grep -Ei 'python' 
# nothing meaningful 

+0

この回答を読んで、appengineの非常に詳細な方法でgcloudを設定することができます。 http://stackoverflow.com/a/28095663/1059396 – minocha

+0

私はそれが私を助けるとは思わない。 'dev_appserver.py'は柔軟なPython環境(特にPython 3)と互換性がありません。 – posita

答えて

4

男の子私は馬鹿だと感じますか?デフォルトでは、gcloud.datastoreはGoogle Cloud Datastoreに接続します(待ちます)。本物。なぜ私は別のものを期待していたのか分かりません。

私のローカルのgcloud設定が既にアカウントの認証情報を使用するように設定されていて、私のローカルインスタンスを実行するときにGCLOUD_PROJECT環境が設定されていたため、うわー!あなたはクラウドデータストアをローカルで実行している「DEV」を持ちたい場合(私はローカルディスク上の任意の変更を見ていなかったのも不思議!)

だから、あなたはDatastore emulatorを実行する必要がありませんよ。これは、dev_appserver.pyを実行するよりも複雑です(これはすべてあなたのために大事に扱われます;アプリのDatastore呼び出しからindex.yamlファイルの値を推測する方法についてはthis workflowなどを参照してください)。 startコマンドに--data-dirオプションを指定しないと、デフォルトのローカルストレージの場所は~/.config/gcloud/emulators/datastore/...になります。

質問を削除するのではなく、私自身のようにnumbskullsに警告/説明として残しておきます。

+1

私はこれが愚かな質問ではないと思います。 公式のドキュメントでは、このことについてはっきりとしているわけではなく、開発者が混乱しているのは不思議ではありません。 – diogovk

関連する問題