【发布时间】:2016-01-11 01:14:32
【问题描述】:
我正在运行一个 Beego 应用程序,它依赖于 /etc/hosts 中的更新(通过 Docker 链接)来查找其他服务器。 /etc/hosts 更新正常,但应用程序不会使用新主机,除非它重新启动或等待太久。在查看了src/net/hosts 的文档后,我似乎被锁定在 5 分钟的刷新时间中。
有没有办法强制刷新这个缓存,还是我看错了这个问题?
【问题讨论】:
-
我也看不出没有组装的方法。
-
我可以更改 src/net/hosts.go 中的超时常量并滚动我自己的自定义 go 构建,但必须有另一种方法。很高兴看到我不是唯一一个,而是坚持这个。
-
通常动态更改应通过其他机制完成,例如 dns 或其他配置数据库。如果您在启用 cgo 的情况下构建二进制文件,它将使用系统解析器来查找主机(这也不能保证它不会被您的系统在短时间内缓存,但在大多数情况下通常不到 5 分钟)
-
@Diablojoe 我认为您还可以复制使用 hosts.go 的库,并对其进行修补以使用修改后的版本。除非您在解决方案中使用大量受影响的库,否则这是一种选择。除此之外,它可能是设计的方式......您可能已经选择了一个解决方案?您能否将其记录为答案:)
-
我刚刚使用以下代码对此进行了测试。当我运行它并将主机添加到我的主机文件时,它会立即解决它。我错过了什么吗? play.golang.org/p/HwOLn3w9BP除了net.LookupHost(),你还依赖其他函数吗?