mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
44 lines
660 B
Go
44 lines
660 B
Go
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"
|
|
}
|