1

学習プロジェクトとして、GAEでdjango-nonrelを使用して、NBAに関するできるだけ多くのデータを含むサイトを設計しています。そのため、400人以上のプレーヤーの情報を手作業で入力することは考えられないため、データベース(GAEデータストアを使用)にフィクスチャを使用してほとんどのデータを事前入力する必要があります。そのために、次の形式で.yamlフィクスチャを作成しました(django docsの例から直接取得)。

- model: players.player
  pk: 1
  fields: 
    team:  10
    first_name:  Jeff
    last_name:  Adrien
    age:  25
    pos:  SF
    gp:  8

- model: players.player
  pk: 2
  fields: 
    team:  7
    first_name:  Arron
    last_name:  Afflalo
    age:  26
    pos:  SG
    gp:  32

残念ながら、「python manage.py remote loaddata nbadata.yaml」を実行すると、最初の190プレーヤー(最初に190をロードしたとき、2回目に186をロードしたため)のみがロードされてから、クラップアウトして表示されます。次のエラーメッセージ:

File "/usr/local/google_appengine/lib/fancy_urllib/fancy_urllib/__init__.py", 
line 367, in do_open
raise url_error
URLError: <urlopen error [Errno 101] Network is unreachable>

誰かが何が起こっているのか、そして解決策があるかどうか知っていますか?

更新:.yamlファイルの名前を「initial_data.yaml」に変更して、「pythonmanage.pydeploy」プロセスのsyncdb部分で自動ロードがうまくいくかどうかを確認しました。次の結果が得られました。

Running syncdb.
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 448 object(s) from 1 fixture(s)

ただし、データストアを見ると、まだ186人のプレーヤーしかいません。誰かが何が起こっているのか知っていますか?

4

1 に答える 1

0

リモート API は、HTTP 要求を作成して、各 HTTP エンティティをアップロードします。ある時点で、ネットワーク接続が失敗し、操作全体が失敗します。

2 つの解決策が考えられますが、どちらも特に簡単ではありません。 - より良いインターネット接続を見つけます。- django-nonrel のフィクスチャ アップロード コードにパッチを適用して、失敗する代わりに自動再試行を行います。

確かではありませんが、syncdb が本番環境で実際に機能するとは思いません。ローカル データストアに対して実行されるだけだと思います。そのため、成功していることがわかります。

于 2012-06-08T17:05:52.183 に答える