在OSX上重启后,本地GAE数据存储区为空

时间:2015-08-16 21:46:08

标签: google-app-engine go polymer

我正在使用Go后端+ Polymer前端构建Google App Engine应用程序。因此,我正在使用dispatch.yaml文件同时提供这两个文件。

我遇到的问题是当我重新启动计算机时数据存储区为空。我已经在OSX 10.9.5和10.10.4上测试了这个。两者在系统重启时都表现出相同的响应。但是,Windows 7似乎仍然坚持数据。

文档表明数据应该持续存在,因为我没有明确表示清楚。不是。我尝试使用此设置数据存储位置:

dev_appserver.py --datastore_path=~/go_apps/data ~/go_apps/my_app

我收到此错误:

google.appengine.tools.devappserver2.errors.AppConfigNotFoundError: "/Users/anthony/go_apps/my_app is a directory but does not contain app.yaml or app.yml

显然,因为我使用的是dispatch.yaml文件,所以不会。因此,由于处理数据的backend确实有一个app.yaml文件,我尝试将其设置在那里。我用这个命令:

dev_appserver.py --datastore_path=~/go_apps/data ~/go_apps/my_app/backend

这似乎也不起作用,因为我收到了这个错误:

sqlite3.OperationalError: unable to open database file

好?好吧,不知道现在在哪里转。根据我从其他帖子中收集的内容,该数据会暂时存储。但是,我似乎无法为数据设置自定义的非临时位置。所以,现在我每次重新启动时都会填充数据存储区,这看起来很荒谬。

*编辑*

我尝试过以下操作,似乎尝试启动应用,并在正确的位置创建datastore.db文件:

dev_appserver.py --datastore_path ~/go_apps/my_app/data/datastore.db  ~/go_apps/my_app/dispatch.yaml ~/go_apps/my_app/backend/app.yaml ~/go_apps/my_app/frontend/app.yaml

然而,我现在遇到了一个奇怪的错误:

/var/folders/04/3hxnpxc15wj2k4v40lkdncd00000gn/T/tmpkcQYnFappengine-go-bin/backend.go:13: can't find import: "github.com/gorilla/mux"

Go是否暂时构建到该文件夹​​?该导入绝对可用,并始终建立良好的调用goapp serve

以下是backend.go

上我的导入内容
import (
    //standard library
    "fmt"
    "net/http"
    "time"
    "log"

    //third party
    "github.com/gorilla/mux"
    "github.com/gorilla/securecookie"
    "github.com/dgrijalva/jwt-go"
    "golang.org/x/crypto/bcrypt"

    //my imports
    "github.com/section14/go_polymer_comm_pkg/controller"
)

2 个答案:

答案 0 :(得分:3)

您必须传递文件的名称以用作持久数据存储,文件夹。

然后提供应用的文件夹(其中包含app.yaml)。不要混合2.所以它应该是这样的:

dev_appserver.py --datastore_path=~/my_app/my_app.db ~/go_apps/my_app

详情可在此处找到:

The Go Development Server / Using the Datastore

备注:

默认数据存储区文件位于temp文件夹中,并且您的OS-X很可能会在系统重新启动时清除它,这就是为什么不为您保留它的原因。另一方面,Windows 7例如在系统重启时不清除临时文件夹。

答案 1 :(得分:1)

通过将GOPATHGOROOT环境变量添加到我的.bash_profile来实现并运行。总共需要运行这三个路径(第一个路径已经设置):

# Add Google AppEngine path
export PATH=/Users/anthony/go_appengine:$PATH

# GOPATH
export GOPATH=/Users/anthony/go_appengine/gopath
export PATH=$PATH:$GOPATH

# GOROOT
export GOROOT=/Users/anthony/go_appengine/goroot
export PATH=$PATH:$GOROOT

从项目文件夹内部(我的驻留在appengine文件夹之外)调用此命令,以便启动它:

dev_appserver.py --datastore_path data/datastore.db  dispatch.yaml backend/app.yaml frontend/app.yaml

请注意,.yaml文件仍然存在。它可以很好地构建它们,如果你不需要dispatch.yaml文件,它们可能在没有它们的情况下构建得很好。

感谢@icza的指导。希望在帖子中组织步骤以便于阅读。