【发布时间】:2012-04-20 12:52:52
【问题描述】:
我刚开始使用 GAE (Python 2.7 SDK 1.6.4),我已经设置了一个 在eclipse(indigo)中使用Pydev(最新版本)的简单测试项目 在 Windows XP (SP3) 上。
一切正常,我的应用程序可以在数据存储区和 blobstore 中记录数据 然后检索它,但是当我停止开发服务器并启动时 它再次丢失了数据存储中的数据。情况并非如此 blobstore 可以很好地保留 blob,我可以看到 在 C:\Temp 中创建的 blobstore 文件夹
我做了明智的事情,并通过旧帖子回顾并发现 大多数有这个问题的人通过改变 数据存储文件的位置,所以我使用了以下参数;
--datastore_path="${workspace_loc}/myproject/datastore"
--blobstore_path="${workspace_loc}/myproject/blobstore"
"${workspace_loc}/myproject/src"
如您所见,我同时移动了 blobstore。
blobstore 仍然有效,现在 blobstore 文件夹在 myproject 文件夹符合预期。数据存储文件仍未创建 但是,当我停止并重新启动开发服务器时,数据 仍然丢失。
开发服务器启动日志包括以下条目
WARNING 2012-04-20 10:49:04,513 datastore_file_stub.py:513] Could not
read datastore data from C:\myworkspace\myproject\datastore
所以我知道它正在尝试在正确的位置创建数据存储。
最后我解除了整个 eclipse 工作区文件夹并将其复制到 另一台具有完全相同设置的计算机,但它正在运行 Windows 7 而不是 Windows XP。
那里一切正常 - 数据存储文件和 blobstore 文件夹现在在我期望的位置创建。
我已经设置了 eclipse、python、gae、我的项目和我的 eclipse 启动 在两台计算机上以完全相同的方式文件,它可以在一台计算机上运行 不是另一个。也许 XP 与它有关,但老实说我 认为这不太可能。
我想出的唯一其他线索是最近对 GAE 开发服务器停止写入数据存储文件后 每次更改并且只在退出时刷新,这个问题可能与我的密切相关;
App Engine local datastore content does not persist
但是,将以下内容添加到我的代码中根本没有帮助。
from google.appengine.tools import dev_appserver
import atexit
atexit.register(dev_appserver.TearDownStubs)
所以就我而言,这也不是因为终止顺序不正确 可以看出,虽然可能是我只是在错误的地方添加了它(我是 python 新手)。
无论如何我很难过,我会非常感谢你的建议 小伙伴们可以想办法了。
【问题讨论】:
-
您可能已经看到另一篇帖子说数据存储仅在正确终止时才刷新到磁盘。 eclipse 最有可能“糟糕”地终止了 dev_appserver。例如,如果它只是终止进程(即与在任务管理器中终止它的方式相同),它不会正确地将数据刷新到磁盘。尝试在没有 Eclipse 的情况下从命令行运行 dev_appserver.py,使用 Ctrl-C 退出。这应该正确保存。我不知道eclipse是如何关闭python进程的,但是你的解决方案很可能是朝那个方向发展的。
-
尝试安装最新的 gae SDK。就像这里的情况:stackoverflow.com/questions/10998936/…
标签: google-app-engine google-cloud-datastore python-2.7 eclipse-indigo