8

Tôi đang chạy một số mã thử nghiệm cơ bản, với web.py và GAE (Windows 7, Python27). Biểu mẫu cho phép các thông báo được đăng lên kho dữ liệu. Khi tôi dừng ứng dụng và chạy lại, mọi dữ liệu được đăng trước đó đã biến mất. Việc thêm các thực thể theo cách thủ công bằng cách sử dụng quản trị viên (http: // localhost: 8080/_ah/admin/datastore) có cùng một vấn đề.Nội dung kho dữ liệu cục bộ của App Engine không còn tồn tại

tôi đã cố gắng thiết lập các đường dẫn trong Cài đặt ứng dụng sử dụng cờ Extra:

--datastore_path=D:/path/to/app/ 

(Đã không chắc chắn về cú pháp đó). Nó không có hiệu lực. Tôi đã tìm kiếm trên máy tính của mình cho * .datastore và không thể tìm thấy bất kỳ tệp nào, có vẻ như nghi ngờ, mặc dù dữ liệu rõ ràng được lưu trữ ở đâu đó trong suốt thời gian chạy ứng dụng.

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() 

UPDATE: Khi tôi chạy nó thông qua dòng lệnh, tôi nhận được như sau:

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 

Đề xuất rằng kho dữ liệu ... không cài đặt đúng cách?

+0

bản sao có thể có của [Kho dữ liệu cục bộ không được duy trì giữa lần khởi động lại ứng dụng] (http://stackoverflow.com/questions/7430888/local-datastore-not-persisted-between-application-restarts) –

+0

@AdamCrossland Tôi không nghĩ của nó một dup, trong câu hỏi này mọi điều sẽ bị xóa trong khi trong phần câu hỏi trước của dữ liệu bị xóa. –

+0

Hãy xem nhật ký (trong bảng điều khiển) khi bạn ăn trưa ứng dụng bạn có thấy cảnh báo nào không? –

Trả lời

7

Kể từ 1.6.4, chúng tôi đã ngừng lưu trữ dữ liệu sau mỗi lần ghi. Phương pháp này không hoạt động khi mô phỏng mô hình giao dịch được tìm thấy trong Kho dữ liệu bản sao cao (bạn sẽ mất cặp vợ chồng cuối cùng viết). Nó cũng vô cùng khủng khiếp. Chúng tôi đã thay đổi nó để kho dữ liệu dev stub flushes tất cả viết và lưu trạng thái của nó khi tắt. Có vẻ như dev_appserver không tắt đúng cách. Bạn sẽ thấy:

Áp dụng tất cả các giao dịch đang chờ và lưu kho dữ liệu

trong các bản ghi khi shutdown server (xem source codesource code). Nếu không, điều đó có nghĩa là máy chủ dev_appserver không bị tắt hoàn toàn (với tín hiệu TERM hoặc KeyInterrupt).

+0

Điều gì là cách chính xác để tắt dev_appserver? Trên Ubuntu tôi sử dụng ngắt Ctrl + c và nó hoạt động. Trên cửa sổ, lệnh nhắc nó hoạt động như là tốt. Nhưng trên cửa sổ, với git bash, nó không tồn tại. –

Các vấn đề liên quan