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


几个月来我一直在使用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 ...


7579
2017-11-03 07:39


起源

谢谢你搞清楚这一点。这也困扰着我。 - Jeff O'Neill
如果您有答案,请将其贴在下面作为答案。 - alex


答案:


也许默认数据存储路径位于关闭时被删除的/ tmp目录中?您可以使用手动设置路径 --datastore_path dev_appserver.py中的标志。看到 文档 详情。


6
2017-11-03 22:12



谢谢你的链接。我查看了文档,从未发现过这篇文章。现在我知道下次启动开发服务器时我会做什么。谢谢! - Damien
不幸的是,当我在设置--datastore_path标志时尝试写入数据存储区时,我的开发服务器崩溃了。我把追溯作为我的主要问题作为更新...... - Damien


此清除不应是默认行为。

  1. 检查Google AppEngine启动器中的此应用程序是否没有 --clear_datastore 旗。
    • 在列表中选择应用,然后选择编辑 - >应用设置...
    • 额外的命令行标志应为空。

我曾经设置这个重新启动一些测试,忘了删除它。

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

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


3
2017-11-03 08:35



谢谢你的回复。实际上我没有使用Google App Engine启动器,而是我的终端。你知道我可以在哪里更改这些设置吗?非常感谢。 - Damien
“设置”只是传递给dev_appserver的标志。 - Moishe Lettvin
默认情况下,数据存储区存储在OS的临时目录中;大多数操作系统在启动时清除它。 - Nick Johnson
好吧我的MAC看起来好像直接在〜/ tmp之下。我将在下次启动开发服务器时使用@moishe标志将其移动到其他位置。谢谢! - Damien


启动dev服务器时标记:

--storage_path=...

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

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


3
2017-11-18 16:52



注意与-datastore_path的混淆,它被许多人引用并且应该仅用于覆盖正确的标志--storage_path =一个解释为什么每个人似乎都缺失--storage_path是它没有列在--help的--help中dev-server而不是另一个... - mrauto


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

如同在这里的情况: 每次项目运行时,app engine datastore都会自动清除


-1
2017-08-27 09:38