长期运行的Golang程序和资源(文件句柄,tcp连接等)

时间:2016-10-19 14:41:09

标签: php file networking go

我来自PHP背景,我对如何安全地使用Golang资源感到困惑。我主要担心的是,在Web环境中,使用PHP,脚本通常是短暂的(HTTP请求/响应生命周期),但是对于Golang,它们应该永远运行(因为Golang程序充当Web服务器和Web)申请同时)。

因此,当涉及到处理数据库连接,日志文件时,我经常看到它们应该被打开一次而不是每个请求,这是有道理的。但是这样做有多稳定?

例如,如果我打开数据库连接,我怎么能确定它在某些时候不会中断? (如果数据库由于某种原因决定杀死它,或者如果我的机器失去了互联网访问权限,那么当我稍后获得互联网访问时,连接会再次变为有效吗?)对于日志文件也是如此,使用PHP对于系统管理员来说不是问题设置日志轮换,但是在Golang中它会破坏我认为的文件句柄(如果程序不知道这个)?

我真的很想使用Golang方式,而不是为每个请求打开/关闭这些资源,但我不确定这样做的“安全”方式是什么,有什么建议吗?或者是否存在针对这些问题的内置功能?

1 个答案:

答案 0 :(得分:0)

在Go中,有一些内置的软件包,它们将以Go惯用的方式处理日志文件和数据库。

他们是:

在Go中,与任何可以创建长时间运行守护程序的语言一样,错误检查和错误处理将非常重要。