你得到的原因是實例將碰撞試圖訪問相同的數據庫本地存儲目錄,默認情況下,該目錄是根據應用程序的名稱確定的 - 對於同一應用程序的2個服務而言是相同的。避免這樣的碰撞
一種方式是也指定本地存儲目錄中,使用dev_appserver.py
的--storage_path
可選參數(其可以經由dev_appserver.py --help
看到):
--storage_path PATH path to the data (datastore, blobstore, etc.)
associated with the application. (default: None)
然而,使用2條不同的存儲路徑可能會產生意想不到的結果 - 如果您的服務引用了該存儲中相同的信息,他們可能會看到不同的值。
將dev_appserver.py
與同一應用的多個服務一起使用的正確方法是通過單個dev_appserver.py
實例運行所有服務,該實例將爲每個服務分配不同的端口。
例如我有一個3服務和使用調度文件的應用程序。這是我從應用程序目錄調用開發服務器的方式,這是3個服務目錄的父目錄(調度文件必須是.yaml
文件參數列表中的第一個,我始終遵循它的默認模塊,在我的情況main/main.yaml
):
/usr/bin/python2.7 /usr/local/google_appengine/dev_appserver.py --host 0.0.0.0 --log_level=debug dispatch.yaml main/main.yaml buildin/buildin.yaml apartci/apartci.yaml
這是怎麼devserver自動分配每個服務偵聽的端口,當服務器開始顯示出來:
INFO 2016-11-18 14:20:53,329 api_server.py:205] Starting API server at: http://localhost:40310
INFO 2016-11-18 14:20:53,330 dispatcher.py:185] Starting dispatcher running at: http://0.0.0.0:8080
INFO 2016-11-18 14:20:53,345 dispatcher.py:197] Starting module "default" running at: http://0.0.0.0:8081
INFO 2016-11-18 14:20:53,353 dispatcher.py:197] Starting module "buildin" running at: http://0.0.0.0:8082
INFO 2016-11-18 14:20:53,361 dispatcher.py:197] Starting module "apartci" running at: http://0.0.0.0:8083
INFO 2016-11-18 14:20:53,362 admin_server.py:116] Starting admin server at: http://localhost:8000
你爲什麼雖然這些治療作爲單獨的項目?爲什麼不同路徑的服務相同? –