我有以下代码段,它从静态文件目录() 提供静态文件:staticFilesDirfor _, prefix := range []string{"css", "img", "js", "static"} { prefix = "/" + prefix + "/" fs := http.FileServer(http.Dir(staticFilesDir + prefix)) r.PathPrefix(prefix).Handler(http.StripPrefix(prefix, fs))}此目录会不时更改,目前我总是需要重新启动服务器进程才能使用新值。如何在不重新启动整个过程的情况下重新配置/重新加载 ?FileServer更复杂的是:http服务器的其他处理程序正在执行长时间运行的作业(包括子进程等),我希望在重新加载期间保持不变。这个非常典型的任务的标准解决方案是什么?
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
您可以在以下两者之间添加间接层:
type MyFileServer struct {
sync.RWMutex
http.FileServer
}
func (f *MyFileServer) SetDir(dir string) {
f.Lock()
defer f.Unlock()
f.FileServer=http.FileServer(dir)
}
func (f *MyFileServer) ServeHTTP(w http.ResponseWriter,req *http.Request) {
f.RLock()
defer f.RUnlock()
f.FileServer.ServeHTTP(w,req)
}
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消