【发布时间】:2020-08-02 19:01:03
【问题描述】:
我目前正在尝试将我的应用程序迁移到 IBM 云功能,但我面临的一个问题是每次调用操作时都无法重新连接 Postgresql DB。
我发现关于如何在 Go 中重用数据库连接的信息非常少,而且我尝试过的解决方案(将数据库处理程序保存在全局变量中)不起作用。
谁能给我指出正确的文档?
谢谢,
-托马斯
PS:这是一段代码,说明了我尝试的方式:
func Storage() Storager {
once.Do(func() {
db := InitDB()
println("Initiating DB...")
s = &storage{
db: db,
}
})
return s
}
// This is declared as a global variable in main
var s = storage.Storage()
【问题讨论】:
-
在 IBM Cloud Functions 等无服务器框架中,每个函数/操作都是独立运行的。您可以尝试将连接信息作为操作之间的参数传递
-
@data_henrik 实际上,AWS lambda 等其他无服务器提供商允许重用数据库连接以节省计算时间,但谢谢。
-
有些代码示例使用了相同的概念,依赖于要重用的容器。 thecodebarbarian.com/…就个人而言,我更喜欢干净的方法
-
@data_henrik 这是我最初在帖子中提到的解决方案,但它不起作用
标签: go ibm-cloud serverless openwhisk ibm-cloud-functions