diff --git a/beego.go b/beego.go index 9dfdbbea..60fd4149 100644 --- a/beego.go +++ b/beego.go @@ -10,6 +10,7 @@ import ( "os" "path" "runtime" + "time" ) const VERSION = "0.7.0" @@ -41,6 +42,7 @@ var ( EnableGzip bool // enable gzip DirectoryIndex bool //ebable DirectoryIndex default is false EnbaleHotUpdate bool //enable HotUpdate default is false + HttpServerTimeOut int64 ) func init() { @@ -67,6 +69,7 @@ func init() { EnableGzip = false StaticDir["/static"] = "static" AppConfigPath = path.Join(AppPath, "conf", "app.conf") + HttpServerTimeOut = 0 ParseConfig() } @@ -106,7 +109,13 @@ func (app *App) Run() { theStoppable.wg.Wait() CloseSelf() } else { - err = http.ListenAndServe(addr, app.Handlers) + s := &http.Server{ + Addr: addr, + Handler: app.Handlers, + ReadTimeout: time.Duration(HttpServerTimeOut) * time.Second, + WriteTimeout: time.Duration(HttpServerTimeOut) * time.Second, + } + err = s.ListenAndServe() } } diff --git a/config.go b/config.go index 89725f50..752204a2 100644 --- a/config.go +++ b/config.go @@ -180,6 +180,9 @@ func ParseConfig() (err error) { if hotupdate, err := AppConfig.Bool("hotupdate"); err == nil { EnbaleHotUpdate = hotupdate } + if timeout, err := AppConfig.Int64("httpservertimeout"); err == nil { + HttpServerTimeOut = timeout + } } return nil }