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:每次关闭计算机时都会清除开发数据存储区。如何避免这种情况?的主要内容,如果未能解决你的问题,请参考以下文章

我的查询有啥问题?为啥每次单击列按钮时都会出错? [关闭]

每次打开 Firefox 时都会发出跨站攻击警告

每次我尝试在我的 android 设备中运行代码时都会收到此错误。我是应用程序开发的初学者。我正在使用 VScode

每次访问计算属性时都会对其进行评估吗?

Google App Engine RPC 服务

在Csharp中,我如何计算每次单击特定按钮时都会增加的某个值