mirror of
https://github.com/kataras/iris.git
synced 2025-12-17 18:07:01 +00:00
add http timeout example
This commit is contained in:
43
_examples/http-server/timeout/main.go
Normal file
43
_examples/http-server/timeout/main.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/kataras/iris/v12"
|
||||
)
|
||||
|
||||
func main() {
|
||||
app := iris.New()
|
||||
|
||||
app.Get("/test", func(ctx iris.Context) {
|
||||
w := new(worker)
|
||||
result := w.Work(ctx)
|
||||
ctx.WriteString(result)
|
||||
})
|
||||
|
||||
app.Listen(":8080", iris.WithTimeout(4*time.Second))
|
||||
}
|
||||
|
||||
type worker struct{}
|
||||
|
||||
func (w *worker) Work(ctx context.Context) string {
|
||||
t := time.Tick(time.Second)
|
||||
times := 0
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
println("context.Done: canceled")
|
||||
return "Work canceled"
|
||||
case <-t:
|
||||
times++
|
||||
println("Doing some work...")
|
||||
|
||||
if times > 5 {
|
||||
return "Work is done with success"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "nothing to do here"
|
||||
}
|
||||
Reference in New Issue
Block a user