【问题标题】:App Engine local datastore content does not persistApp Engine 本地数据存储区内容不持久
【发布时间】:2012-04-06 18:00:35
【问题描述】:

我正在运行一些基本的测试代码,包括 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

提示数据存储...没有正确安装?

【问题讨论】:

  • @AdamCrossland 我不认为这是一个重复,在这个问题中,所有内容都被删除,而在上一个问题中,部分数据被删除。
  • 在应用程序午餐时查看日志(在控制台窗格中),您在那里看到任何警告吗?
  • @ShayErlichmen 我已经用命令行运行它的警告更新了我的帖子。绝对是一个线索,但我不知道该怎么办。
  • 检查this question中的解决方法我认为它可以帮助您解决问题

标签: python-2.7 google-app-engine persistence google-cloud-datastore


【解决方案1】:

从 1.6.4 开始,我们在每次写入后停止保存数据存储。此方法在模拟高复制数据存储中的事务模型时不起作用(您将丢失最后几次写入)。它也非常低效。我们对其进行了更改,以便数据存储开发存根刷新所有写入并在关闭时保存其状态。听起来 dev_appserver 没有正确关闭。你应该看到:

应用所有待处理事务并保存数据存储

在关闭服务器时的日志中(参见source codesource code)。如果不这样做,则意味着 dev_appserver 没有被完全关闭(使用 TERM 信号或 KeyInterrupt)。

【讨论】:

  • 关闭dev_appserver的正确方法是什么?在 Ubuntu 上,我使用中断 Ctrl +c 并且它可以工作。在 Windows 上,命令提示符也可以。但在 Windows 上,使用 git bash,它不会持续存在。
猜你喜欢
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
相关资源
最近更新 更多