有没有办法在没有class Employee {
static hasOne = [user:User, vpn:Vpn, tenrox:Tenrox, machine: Machine, dbuser:DbUser];
static mapping = {
version false
id generator: 'assigned',type: 'string'
}
String id // Declares id as String
String name
String designation
String team
Long contact_no
static constraints = {
name(nullable: false,maxSize:100)
designation(nullable: true,maxSize:40)
team(nullable: true,maxSize:40)
contact_no(nullable: true,maxSize:20)
}
}
的情况下在我的func sq(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for number := range in {
out <- number * number
}
close(out)
}()
return out
}
函数中获取自动标量应用程序的VersionID?唯一可用的选项似乎是init()
。手动缩放的实例在启动时调用Context
(允许访问appengine.VersionID(context.Context)
),但对于自动调整的实例没有这样的内容。
我并不关心/_ah/start
返回的生成ID,只是app.yaml版本。
编辑:一点上下文:我想以x-x-x-dev或x-x-x-live的形式部署版本,并且我的数据库连接取决于版本后缀。这样,当我查看GCP控制台时,我可以确定哪些部署的模块/服务正在使用哪个数据库。当然,我在Context
中设置了我的数据库连接池,该连接池无法访问appengine.VersionID
。
答案 0 :(得分:1)
我在网上搜索和搜索没有任何答案,所以就在这里。
只需解析init()
函数中的app.yaml文件即可。我的示例使用yaml解析包,但如果需要,可以更轻量级地完成。
import "github.com/ghodss/yaml"
type AppVersion struct {
Version string `json:"version"`
}
func VersionID() (string, error) {
dat, err := ioutil.ReadFile("app.yaml")
if err != nil {
return "", err
}
a := &AppVersion{}
err = yaml.Unmarshal(dat, a)
if err != nil {
return "", err
}
return a.Version, nil
}
请注意,这不会以appengine.VersionID()
所做的X.Y形式返回生成的ID。只有版本的X部分。
顺便说一下,在Github上的appengine repo中,对appengine.VersionID
的实际调用需要Context
,但在内部使用nil
调用内部包。所以他们基本上强迫你用Context
来调用它,但实际上并没有使用它。令人难以置信的是真气。
编辑:应该注意的是,gcloud中的新Go SDK不再支持app.yaml中的version
,因为它现在是部署时的必需参数。然而,&#34;遗产&#34; SDK仍然受支持和维护,我将在今天(12/24/2018)继续使用。