我有一个带有数据库会话变量的结构。我应该在哪里设置/调用延迟 - 比如构造函数/析构函数?
type MyType struct {
session *gocql.Session
}
我附加了一个* gocql.Session的实例,它应该和struct一样长。
func (this *myType) function_one_using_the_session(){}
func (this *myType) function_two_using_the_session(){}
我找到了this:runtime.SetFinalizer(a, func(a *Test) { fmt.Println("I AM DEAD") })
我可能会这样做或编写我自己的Close()
函数。
这可能会有所帮助 - 欢迎其他评论?
我试图只使用这么多会话。但是我应该在以下函数中推迟会话:
func GetSession() *gocql.Session {
if cluster == nil {
cluster = gocql.NewCluster("ip")
cluster.Keyspace = "Keyspace"
session, _ = cluster.CreateSession()
return session
} else {
session, _ = cluster.CreateSession()
// defer session.Close()
}
return session
}
答案 0 :(得分:1)
您可以使用上下文来设置您的处理程序以设置Cassandra会话,使用它并在之后释放,然后将其返回到您的会话池。
查看有关如何组织对数据库服务的访问权限的to this blog post。