簡體   English   中英

Python3 dev_appserver 和數據存儲

[英]Python3 dev_appserver and datastore

我正在為 appengine 創建一個小型 Python 3 應用程序,我希望這將使用本地數據存儲(據我所知,這是 a.db 文件)。

我正在使用dev_appserver.py. ,根據文檔,我使用 GOOGLE_APPLICATION_CREDENTIALS env var 公開了一個服務帳戶(很久以前,當 Python2 是唯一受支持的運行時,這不是必需的),如果我嘗試在數據存儲中創建任何實體,我仍然有 403 權限錯誤.

這不應該使用本地數據存儲嗎?

我應該使用數據存儲模擬器嗎?

是否仍然需要使用dev_appserver.py ,或者我可以使用正確的python...命令啟動應用程序?

謝謝,我離開 appengine 已經 10 多年了,這只是為了我正在做的本地測試。

Ps:我正在使用google.cloud.ndb訪問數據存儲區。

我也有過同樣的經歷。 似乎gcloud CLI正在嘗試確保項目(您的本地項目)存在於 Google Cloud 中,並且指定的服務帳戶可以訪問它(這與 Python 2 的行為不同)。

解決方案是 - 根據Google ,您可以使用通常使用python xyz的開發工具運行flask run abc應用datastore emulator 這種方法的缺點是您無法訪問用於查看數據的 GUI。

我使用 Makefile 來啟動在本地主機上運行和測試所需的東西。 這是最相關的片段:

run: stop
+ cd static/js-src; rollup -cw --no-watch.clearScreen &
+ sass -qw static/sass:static/css &
+ gcloud beta emulators datastore start --consistency=1.0 --host-port=:8081 &
+ gcloud beta emulators datastore start --consistency=1.0 --host-port=:8082 --no-store-on-disk &
+ redis-server --save "" &
+ sleep 2
+ python main.py

這是它按順序執行的操作:

  • 使用匯總編譯 javascript
  • 編譯 sass
  • 在端口 8081 上啟動一個數據存儲模擬器實例,以便在 localhost 上運行。 此數據存儲存儲在磁盤上,因此我的數據在停止並重新啟動后仍然存在。
  • 在端口 8082 上啟動第二個數據存儲模擬器實例以進行測試。 這不存儲在磁盤上。 這使我可以在 localhost 上運行並同時運行測試,而不會相互干擾。
  • 我的應用程序使用 redis
  • 睡眠以允許數據存儲模擬器完成啟動
  • 在本地主機上運行應用程序

我有一個單獨的停止命令來停止一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM