App Engine:每次关闭计算机时都会清除开发数据存储区。怎么避免这个?

时间:2011-11-03 07:39:50

标签: google-app-engine sdk fixtures datastore

我已经使用App Engine和Python几个月了。现在我的应用程序有相当数量的代码,我正在尝试解决到目前为止我忽略的问题:

每次关闭计算机时,都会删除所有开发数据存储区实体。

我希望在下次启动开发服务器之前保留这些数据。但我也希望能够在不丢失所有这些数据的情况下关闭计算机。

我该怎么办?

非常感谢

========更新==========

当我按照@moishe的说明设置datastore_path标志时,我的开发服务器一旦写入数据存储区就会崩溃。

File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/datastore_file_stub.py", line 557, in __WritePickled
os.rename(tmp_filename, filename)
OSError: [Errno 13] Permission denied

因此,我给了这个文件夹所有的UNIX权限

chmod a+w /my_app_folder

但我现在有另一个错误

OSError: [Errno 21] Is a directory

显然路径不应该是目录。所以我把路径改为:

/my_app_folder/data.datastore

现在它有效! PFF ...

4 个答案:

答案 0 :(得分:6)

也许默认数据存储路径位于关机时被删除的/ tmp目录中?您可以在dev_appserver.py中使用--datastore_path标志手动设置路径。有关详细信息,请参阅the docs

答案 1 :(得分:3)

此清算不应是默认行为。

  1. 检查Google AppEngine启动器中的此应用程序是否没有--clear_datastore标志。
    • 在列表中选择应用,然后选择编辑 - >应用设置...
    • 额外的命令行标志应为空。
  2. 我曾设置此项以重新启动某些测试但忘记将其删除。

    1. 删除启动器中的现有应用程序并创建新应用程序。看看是否有帮助。

    2. 确认操作系统未删除该文件。如果您打开应用程序的日志,然后启动它,输出将显示sqlite文件所在的位置(例如T:\ temp \ dev_appserver.rdbms)

答案 2 :(得分:3)

启动开发服务器时

标志:

--storage_path= ...

  

所有本地文件(例如数据存储区,Blobstore文件,   除非存储谷歌云存储文件,日志等)   被--datastore_path, - blobstore_path, - logs_path等覆盖

发现于https://developers.google.com/appengine/docs/python/tools/devserver?csw=1

答案 3 :(得分:-1)

我遇到了同样的问题,安装最新的gae SDK解决了它。

与此处的情况一样:app engine datastore auto-clears every time project runs