2011-08-23 12 views
1

私は定期的に自分のGoogle App Engineプロダクションデータをローカルに(appcfg.py download_dataというカスタムスクリプトを使用して)ダウンロードし、開発サーバにアップロードして、開発中のデータ環境と生産が一致します。あなたは、ランチパッド上でスクリプトを見つけることができます。コマンドラインからGoogle App Engineのdevサーバデータにアクセスする方法

これは、ランチャースクリプトが何をするかです:

  • スタートdevサーバー(データベースのフラッシュ)
  • モデルをローカルデータベースにダウンロードしてください
  • 開発環境のどのユーザーでもパスワード「toto」でログインできるように、すべての通常ユーザーと管理ユーザーのパスワードを変更してください。これは直接script that accesses the freshly-loaded datastore dataで行われます。

GAE 1.5.2まではすべて正常に機能していました。その時点で、開発サーバーは接頭辞dev~に変更されたので、私は--default_partition=''を追加してdevサーバーを起動しました。ただし、パスワードを変更するスクリプトはロードされたデータにアクセスしないように見えるため、通常のユーザーまたは管理者のユーザーは常に0のエンティティを返します。私はコマンドラインからデータにアクセスする方法を疑問に思っています。これは、プロダクションサーバーでこれが起きるのを防ぐためのURLではないためです。 ./extraのスクリプトはGAEにアップロードされないため、そこから実行することはできません。

はあなたのアイデアを与える(しかし、より多くのコンテキストのスクリプトを見て)、このスクリプトを実行するために使用されるものです(と= 1.5.1 GAE <まで働いていた)には:

args, option_dict = ParseArguments(['', colCasaBasePath]) 
config, matcher = LoadAppConfig(colCasaBasePath, {}) 
SetupStubs(config.application, **option_dict) 

from src.models import WebUser, ScyllaUser 
for tipo in (WebUser, ScyllaUser): 
    usuarios = tipo.all() 
    # Now len(usuarios) == 0 

GAEデータアクセススクリプトが破損した(GAE 1.5.1以降)変更された点は何ですか?このようなワークフローはどのように実行しますか?

+0

SetupStubsに渡すときに 'config ~application'の前に' dev〜 'を付けてみましたか? –

+0

ニック、それはうまくいきませんでした。実際、私は--default_partition = ''でdevサーバを起動して以来、dev〜を追加すると逆の効果がありました。 – Emilien

答えて

0

トリックは、GAEのデータにアクセスするスクリプトでParseArguments()コールに--default_partition=引数を追加することです:=の後には何もありません

args, option_dict = ParseArguments(['', colCasaBasePath, "--default_partition="]) 

注こと、それが私を先送りにするものです。私は最初に"--default_partition=''"を追加しようとしましたが、何の効果もありませんでした(しかし、エラーは発生しませんでした)。

この呼び出しを追加すると、スクリプトはdevデータストアにロードされたすべてのユーザーをループすることができます。私はon Launchpadの変更を見ることができます。

関連する問題