9

web.pyとGAE(Windows 7、Python27)を使用して、いくつかの基本的なテストコードを実行しています。このフォームを使用すると、メッセージをデータストアに投稿できます。アプリを停止して再度実行すると、以前に投稿されたデータがすべて消えてしまいます。admin(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

データストアが正しくインストールされなかったことを示唆していますか?

4

1 に答える 1

7

1.6.4 の時点で、すべての書き込み後にデータストアを保存するのをやめました。この方法は、高レプリケーション データストアで見つかったトランザクション モデルをシミュレートするときに機能しませんでした (最後の数回の書き込みが失われます)。また、恐ろしく非効率的です。これを変更して、データストア dev スタブがすべての書き込みをフラッシュし、シャットダウン時にその状態を保存するようにしました。dev_appserver が正しくシャットダウンしていないようです。君は見るべきだ:

保留中のすべてのトランザクションを適用し、データストアを保存する

サーバーをシャットダウンするときのログ (ソース コードソース コードを参照)。そうでない場合は、dev_appserver が (TERM シグナルまたは KeyInterrupt で) 正常にシャットダウンされていないことを意味します。

于 2012-04-08T05:41:43.477 に答える