Skip to content

Repository files navigation

What is AF

The name of AF comes from air refueling.

AF is a package of Go.

You can use the AF write a graceful reload HTTP server easily.

Support

  • *nix
  • Windows (only build and run)

Features

  • graceful reload
  • graceful stop
  • custom signal handler

Install

goget-ugithub.com/ailncode/af
#orgomodedit-require=github.com/ailncode/af@latest

Usage

  1. Import the AF
import"github.com/ailncode/af"
  1. Simple use
package main
import(
"fmt""net/http""github.com/ailncode/af"
)
funcmain(){
http.HandleFunc("/",func(w http.ResponseWriter,r*http.Request) {
fmt.Fprintln(w, "ok")
})
refuel:=af.Default()
//refuel.Addr = ":8080"//:8080 is the default Addr//refuel.Handler = http.DefaultServeMux//http.DefaultServeMux is the default HTTP handler//refuel.ShutdownTimeOut = time.Second * 10//time.Second * 10 is the default ShutdownTimeOutrefuel.Run()
//You can check error in here.
}
  1. Reload & Stop your server
#Reloadkill -USR2 <pid>#Stopkill -INT <pid>#or kill -TERM <pid>
  1. Use your custom Listen Address Handler ShutdownTimeOut
package main
import(
"net/http""time""github.com/ailncode/af""github.com/gin-gonic/gin"
)
funcmain(){
//Use handler like *gin.Enginerouter:=gin.Default()
router.GET("/", func(context*gin.Context) {
context.String(http.StatusOK,"ok")
})
refuel:=af.Default()
refuel.Handler=router//You can use the below code also.//af := af.NewWithHandler(r)refuel.Addr=":80"refuel.ShutdownTimeOut=time.Second*10refuel.Run()
}
  1. Use your custom system signal handler
package main
import (
"github.com/ailncode/af""syscall""time"
)
funcmain() {
refuel:=af.Default()
refuel.ShutdownTimeOut=time.Second*10refuel.HandleSignal(func(r*af.AF) {
r.Stop()
}, syscall.SIGINT, syscall.SIGTERM)
refuel.HandleSignal(func(r*af.AF) {
r.Reload()
//You can check error in here
}, syscall.SIGUSR2)
refuel.Run()
}
  1. Use your custom server
package main
import (
"af""net/http"
)
funcmain() {
server:=&http.Server{
Addr:"8080",
Handler:http.DefaultServeMux,
//...
}
refuel:=af.NewWithServer(server)
refuel.Run()
}

About

You can use this package write a graceful reload HTTP server easily

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages