zoukankan      html  css  js  c++  java
  • 9.11 优雅的停止http服务

    
    package main
    
    import (
    	"context"
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    	"os/signal"
    	"time"
    )
    
    func main() {
    
    	mux := http.NewServeMux()
    	mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    		time.Sleep(10 * time.Second)
    		fmt.Fprintln(w, "Hello world!")
    	})
    
    	srv := &http.Server{Addr: ":8080", Handler: mux}
    	go func() {
    		if err := srv.ListenAndServe(); err != nil {
    			log.Printf("Server error: %s
    ", err)
    		}
    	}()
    
    	log.Println("Server listening on : " + srv.Addr)
    
    	stopChan := make(chan os.Signal)
    	signal.Notify(stopChan, os.Interrupt)
    
    	<-stopChan // wait for SIGINT
    	log.Println("Shutting down server...")
    
    	ctx, cancel := context.WithTimeout(
    		context.Background(),
    		30*time.Second)
    	srv.Shutdown(ctx)
    	cancel()
    	log.Println("Server gracefully stopped")
    }
    
    /*
    2018/03/27 00:18:10 Server listening on : :8080
    2018/03/27 00:19:56 Shutting down server...
    2018/03/27 00:19:56 Server error: http: Server closed
    2018/03/27 00:20:04 Server gracefully stopped
    */
    
  • 相关阅读:
    输入属性,输出属性
    angular响应式表单
    angular 响应式表单指令
    c++ Primer
    CString 操作函数
    字符串分割strtok_s
    LPSTR LPTSTR
    CString分割切分
    CStringArray
    十进制
  • 原文地址:https://www.cnblogs.com/zrdpy/p/8655004.html
Copyright © 2011-2022 走看看