App Engine:每次关闭计算机时都会清除开发数据存储区。如何避免这种情况?
Posted
技术标签:
【中文标题】App Engine:每次关闭计算机时都会清除开发数据存储区。如何避免这种情况?【英文标题】:App Engine: Development datastore cleared each time I turn off my computer. How to avoid this? 【发布时间】:2011-12-20 22:49:14 【问题描述】:几个月来,我一直在使用带有 Python 的 App Engine。现在我的应用程序有相当多的代码,我正在尝试解决一个我迄今为止忽略的问题:
每次我关闭计算机时,我的所有开发数据存储实体都会被删除。
我想保留这些数据,直到我下次启动我的开发服务器。但我也希望能够在不丢失所有这些数据的情况下关闭计算机。
我应该如何进行?
非常感谢
======== 更新 ==========
当我按照@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
现在它可以工作了!噗……
【问题讨论】:
感谢您解决这个问题。这也一直困扰着我。 如果您有答案,请将其作为答案发布在下方。 【参考方案1】:启动开发服务器时的标志:
--storage_path=
...
所有本地文件(例如 Datastore、Blobstore 文件、 谷歌云存储文件、日志等)将被存储,除非 被 --datastore_path、--blobstore_path、--logs_path 等覆盖。
发现于https://developers.google.com/appengine/docs/python/tools/devserver?csw=1
【讨论】:
请注意与 --datastore_path 的混淆,它被许多人引用并且应该仅用于覆盖正确的标志 --storage_path= 每个人似乎都缺少 --storage_path 的一种解释是它不是在开发服务器的 --help 中列出,而不是另一个...【参考方案2】:我遇到了同样的问题,安装最新的 gae SDK 解决了。
就像这里的例子:app engine datastore auto-clears every time project runs
【讨论】:
【参考方案3】:也许默认的数据存储路径位于关机时被删除的 /tmp 目录中?您可以在 dev_appserver.py 中使用--datastore_path
标志手动设置路径。详情请见the docs。
【讨论】:
感谢您的链接。我浏览了文档,但从未遇到过这篇文章。现在我知道下次启动开发服务器时我会做什么。谢谢! 不幸的是,当我在设置 --datastore_path 标志时尝试写入数据存储区时,我的开发服务器崩溃了。我将回溯作为更新放在我的主要问题中......【参考方案4】:这种清除不应该是默认行为。
-
检查 Google AppEngine 启动器中的此应用程序是否没有
--clear_datastore
标志。
在列表中选择应用程序并选择编辑->应用程序设置...
额外的命令行标志应该是空的。
我曾经将它设置为重新开始一些测试并忘记删除它。
删除启动器中的现有应用程序并创建新应用程序。看看有没有帮助。
验证操作系统没有删除文件。如果您打开应用程序的日志,然后启动它,输出会显示 sqlite 文件所在的位置(例如 T:\temp\dev_appserver.rdbms)
【讨论】:
感谢您的回复。实际上,我使用的不是 Google App Engine 启动器,而是我的终端。你知道我可以在哪里更改这些设置吗?非常感谢。 “设置”只是传递给 dev_appserver 的标志。 datastore默认存放在操作系统的临时目录中;大多数操作系统会在启动时清除它。 好的,在我的 MAC 上,它看起来直接在 ~/tmp 下。下次启动开发服务器时,我将使用 @moishe 标志将其移动到其他位置。谢谢!以上是关于App Engine:每次关闭计算机时都会清除开发数据存储区。如何避免这种情况?的主要内容,如果未能解决你的问题,请参考以下文章