Django-nonrel:只有部分夹具数据在生产中加载

时间:2012-06-08 05:38:18

标签: django google-app-engine google-cloud-datastore django-nonrel

作为一个学习项目,我正在使用django-nonrel和GAE来设计一个尽可能多的有关NBA数据的网站。因此,我需要使用夹具预填充我的数据库(我正在使用GAE数据存储区)和大多数数据,因为手动输入400多个玩家的信息简直是不可想象的。为此,我创建了一个具有以下格式的.yaml fixture(直接来自django docs example):

- 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,第二次加载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',以查看在'python manage.py deploy'进程的syncdb部分中自动加载是否会更好。我得到了以下结果:

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

然而,当我查看数据存储区时,仍然只有186名玩家!有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:0)

远程API发出HTTP请求以上传每个HTTP实体。在某些时候,您的网络连接失败,整个操作失败。

可以想到两个解决方案,但两者都不是特别容易: - 找到更好的互联网连接。 - 在django-nonrel中修补夹具上传代码,进行一些自动重试,而不是失败。

我不确定,但我认为syncdb并不适用于生产,我相信它只是针对本地数据存储运行,这就是为什么你看到成功的原因。