App Engine 本地数据存储内容不持久化。

9
我正在使用 web.py 和 GAE(Windows 7,Python27)运行一些基本的测试代码。该表单允许将消息发布到数据存储区。但是,当我停止应用并再次运行时,之前发布的任何数据都会消失。在管理员页面(http://localhost:8080/_ah/admin/datastore)手动添加实体也有同样的问题。我尝试使用额外的标志在应用设置中设置路径:
--datastore_path=D:/path/to/app/

(语法不确定)。它没有任何效果。我在计算机上搜索 *.datastore,也找不到任何文件,这似乎有些可疑,虽然数据显然在应用程序运行期间被存储在某个地方。

from google.appengine.ext import db
import web

urls = (
    '/', 'index',
    '/note', 'note',
    '/crash', 'crash'
)

render = web.template.render('templates/')

class Note(db.Model):
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)

class index:
    def GET(self):
            notes = db.GqlQuery("SELECT * FROM Note ORDER BY date DESC LIMIT 10")
            return render.index(notes)

class note:
    def POST(self):
            i = web.input('content')
            note = Note()
            note.content = i.content
            note.put()
            return web.seeother('/')

class crash:
    def GET(self):
            import logging
            logging.error('test')
            crash

app = web.application(urls, globals())

def main():
    app.cgirun()

if __name__ == '__main__':
  main()

更新: 当我通过命令行运行它时,我得到以下结果:
WARNING  2012-04-06 19:07:31,266 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
INFO     2012-04-06 19:07:31,778 appengine_rpc.py:160] Server: appengine.google.com
WARNING  2012-04-06 19:07:31,783 datastore_file_stub.py:513] Could not read datastore data from c:\users\amy\appdata\local\temp\dev_appserver.datastore
WARNING  2012-04-06 19:07:31,851 dev_appserver.py:3394] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO     2012-04-06 19:07:32,052 dev_appserver_multiprocess.py:647] Running application dev~palimpsest01 on port 8080: http://localhost:8080
INFO     2012-04-06 19:07:32,052 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin

建议数据存储没有正确安装?

可能是本地数据存储在应用程序重新启动时未持久化的重复问题。 - Adam Crossland
@AdamCrossland 我不认为这是一个重复的问题,在这个问题中,所有的东西都被擦除了,而在之前的问题中只有部分数据被擦除了。 - Shay Erlichmen
@ShayErlichmen 我已经更新了我的帖子,并附上了在命令行中运行它时收到的警告。这绝对是一个线索,但我不确定该怎么做。 - rhiaro
记录一下,这个问题也在使用内置留言簿演示时出现。我尝试完全重新安装AppEngine,但没有效果。 - rhiaro
1
请查看此问题中的解决方法,我认为它可以帮助你的问题。 - Shay Erlichmen
显示剩余3条评论
1个回答

7
截至1.6.4版本,我们停止了每次写入后保存数据存储库的方法。当模拟高复制数据存储库中的事务模型时,此方法不起作用(您将丢失最后几次写入)。它也非常低效。我们进行了更改,使数据存储开发工具存根刷新所有写入并在关闭时保存其状态。看起来dev_appserver没有正确关闭。在关闭服务器时,您应该看到日志中的以下内容:
应用所有待处理的事务并保存数据存储库。
(请参见source codesource code)。如果没有,这意味着dev_appserver没有被干净地关闭(使用TERM信号或KeyInterrupt)。

1
关闭 dev_appserver 的正确方法是什么?在 Ubuntu 上,我使用中断 Ctrl +c 并且它正常工作。在 Windows 上,命令提示符也可以正常工作。但是在 Windows 上,使用 Git Bash 时,它不会持久化。 - Abhimanyu Pathania

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接