我有以下代碼段,它從靜態(tài)文件目錄() 提供靜態(tài)文件: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))}此目錄會不時更改,目前我總是需要重新啟動服務(wù)器進(jìn)程才能使用新值。如何在不重新啟動整個過程的情況下重新配置/重新加載 ?FileServer更復(fù)雜的是:http服務(wù)器的其他處理程序正在執(zhí)行長時間運行的作業(yè)(包括子進(jìn)程等),我希望在重新加載期間保持不變。這個非常典型的任務(wù)的標(biāo)準(zhǔn)解決方案是什么?
1 回答

慕村225694
TA貢獻(xiàn)1880條經(jīng)驗 獲得超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 關(guān)注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消