成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > golang 監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明詳解

golang 監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明詳解

熱門標簽:評價高的400電話辦理 百度地圖標注后傳給手機 外呼系統(tǒng)顯本地手機號 涿州代理外呼系統(tǒng) excel地圖標注分布數(shù)據(jù) 壽光微信地圖標注 外呼系統(tǒng)用什么卡 電話機器人軟件免費 阿克蘇地圖標注

監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明

package main 
import (
	"context"
	"fmt"
	"golang.org/x/sync/errgroup"
	"net/http"
	"os"
	"os/signal"
	"syscall"
) 
 
func main() { 
	g, ctx := errgroup.WithContext(context.Background())
	fmt.Println("服務(wù)啟動start!")
	addr := ":9091"
	s :=http.Server{
		Addr: addr,
		Handler:http.DefaultServeMux,
	}
	g.Go(func() error {
		http.HandleFunc("/test1", func(writer http.ResponseWriter, request *http.Request) {
			fmt.Println("tes1")
			writer.Write([]byte("tes1"))
		})
		return s.ListenAndServe()
	})
	g.Go(func() error {
		exit := make(chan os.Signal)
		//監(jiān)聽 Ctrl+C 信號
		signal.Notify(exit, syscall.SIGINT, syscall.SIGTERM)
		select {
		case -exit:
			fmt.Println("進程已被取消~")
			return s.Shutdown(ctx)
		}
	})
	err := g.Wait()
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("服務(wù)啟動成功!")
	if ctx.Err() !=nil {
		fmt.Println(ctx.Err())
		fmt.Println("服務(wù)關(guān)閉成功!")
		os.Exit(0)
	}
 
}

補充:golang http服務(wù)實現(xiàn)平滑重啟

看代碼吧~

package main 
import (
    "context"
    "encoding/json"
    "fmt"
    "math/rand"
    "net/http"
    "os"
    "os/signal"
    "time"
)
 
var logChan  = make(chan map[string]interface{}) 
var requestStatusMap = map[int]bool{}  
var done = make(chan bool, 1)
var quit = make(chan os.Signal, 1) 
 
//為什么這樣可以平滑重啟?
// 正常情況下是server.ListenAndServe() 這個位置hang住整個進程的
// 可以把這個程序看成兩部分,1個是web服務(wù)的監(jiān)聽部分,一個是處理部分, 如果web服務(wù)器不開啟了,那么就不能處理新進來的請求了(可以理解為一個帶路的)
// 真正讓這個請求斷掉  是因為主進程(main)被kill
// 所以平滑重啟的原理就是,先kill掉web服務(wù)器,不讓新的請求進來,等現(xiàn)有的全部請求完了,然后結(jié)束當前進程
func main() {
    server := newServer()
    signal.Notify(quit, os.Interrupt)
    go monitorKill(server, quit)
    server.ListenAndServe()
    -done
} 
 
func newServer() *http.Server {
    router := http.NewServeMux()
    router.HandleFunc("/hello", sayHello)
    return http.Server{
        Addr:         ":8262",
        Handler:      router,
    }
}
 
func monitorKill(server *http.Server, quit -chan os.Signal)  {
    -quit
    go shutDown(server)
    for {
        if len(requestStatusMap) != 0 {
            fmt.Println("目前還有進行中的請求,請稍等")
            time.Sleep(time.Second * 1)
            continue
        } else {
            close(done)
            break
        }
    }
}
 
func shutDown(server *http.Server) {
    if err := server.Shutdown(context.Background()); err != nil {
        fmt.Println(err)
    }
}
 
func sayHello(w http.ResponseWriter, r *http.Request) {
    go WriteInfo()//請求寫日志
    var uniqueId = GenerateRangeNum(1, 1000)
    requestStatusMap[uniqueId] = false
    url := r.URL.Path
    query  := r.URL.RawQuery
    method := r.Method
    a := map[string] interface{}{
        "url" : url,
        "method" : method,
        "query" : query,
        "response": "hello world!",
    }
    logChan-a
    w.Write([]byte("hello world!"))
    time.Sleep(time.Second * 10)
    delete(requestStatusMap, uniqueId)
}
 
func WriteInfo() {
    info := -logChan
    fileName := "/tmp/weekhomework.log"
    _, err := os.Stat(fileName)
    if err != nil || os.IsNotExist(err) {
        _, _ = os.Create(fileName)
    }
    f,err := os.OpenFile(fileName, os.O_WRONLY, 0644)
    defer f.Close()
    if err !=nil {
        fmt.Println(err.Error())
    } else {
        //追加寫入   為什么O_APPEND 模式無法寫入? todo
        n, _ := f.Seek(0, 2)
        infostr, _ := json.Marshal(info)
        _,err=f.WriteAt([]byte(string(infostr) +"\n"), n)
    }
}
 
func GenerateRangeNum(min int, max int) int {
    if min == max {
        return min
    }
    rand.Seed(time.Now().Unix())
    randNum := rand.Intn(max-min) + min
    return randNum
}

主要思路:

對于每個請求都做記錄,處理完成之后做刪除。 用一個協(xié)程去監(jiān)控中斷信號,有中斷信號先把http服務(wù)關(guān)閉。

如果這個時候還有請求沒有處理完,那么就輪訓(xùn)等待,等全部處理完那么就 發(fā)出終止信號結(jié)束main進程的執(zhí)行

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Linux進程間通信--使用信號
  • 詳解Linux進程間通信——使用信號量
  • 詳解Linux多線程使用信號量同步
  • Linux下的信號詳解及捕捉信號
  • linux下基于C語言的信號編程實例
  • Linux線程同步之信號C語言實例
  • linux多線程編程詳解教程(線程通過信號量實現(xiàn)通信代碼)
  • Linux下semop等待信號時出現(xiàn)Interrupted System Call錯誤(EINTR)解決方法
  • 淺談Linux信號機制

標簽:重慶 梅河口 汕頭 欽州 銅川 雞西 吐魯番 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《golang 監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明詳解》,本文關(guān)鍵詞  golang,監(jiān)聽,服務(wù),的,信號,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang 監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang 監(jiān)聽服務(wù)的信號,實現(xiàn)平滑啟動,linux信號說明詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人黄色在线| 欧美色图第二页| 国产精九九网站漫画| 亚洲丝袜美腿综合| 免费中文日韩| 啪啪小视频网站| 4hu四虎永久在线观看| 激情综合在线观看| 中文字幕在线视频观看| 欧美自拍偷拍午夜视频| 懂色av懂色av粉嫩av| 国产精品国产亚洲伊人久久| 男操女免费网站| 日本视频在线免费| 国产精品99一区| 欧美xxxx做受欧美88bbw| 麻豆传媒在线观看| 在线观看国产精品91| 日本乱人伦a精品| 天天躁日日躁狠狠躁欧美| 最新av在线| 亚洲国产精品大全| 色94色欧美sute亚洲线路一久| 国产探花在线播放| 午夜天堂精品久久久久| 91嫩草国产丨精品入口麻豆| 无码人妻丰满熟妇区毛片蜜桃精品| 日本精品裸体写真集在线观看| 中韩乱幕日产无线码一区| 亚洲www在线| 在线免费观看av网址| 欧美一级在线播放| 欧美精品一本久久男人的天堂| 亚洲成人www| 日韩成人免费电影| 九色视频在线观看免费| 日本福利视频在线| 国产剧情一区二区在线观看| 国产午夜精品久久久久久久久| 成人av网址在线观看| 一本久久精品一区二区| 亚洲一区二区三区xxx视频| 91看片淫黄大片一级在线观看| 午夜精品影院在线观看| 精品亚洲一区二区| 最新在线观看av网站| 免费日本黄色网址| 日韩一区二区免费在线电影| 日韩高清免费在线| 国产欧美一区二区精品久久久| 日韩欧美精品在线不卡| 国产福利在线| 精品视频网站| 欧美美女在线| 国产视频二区三区| 免费播放片a高清在线观看| 性xxxx奶大欧美高清| 天天操天天爱天天爽| 日韩黄色片在线| 91精品国产乱码久久久竹菊| 国产无遮挡免费视频| 久久久久99精品久久久久| 国产91在线播放精品| 亚洲av熟女国产一区二区性色| 亚洲第一天堂久久| 国产精品国产三级国产专区51| 久久九九国产精品| 国产一级片视频| 精品福利视频导航大全| 999在线精品| 亚洲电影一二三区| 天天综合入口| a级大胆欧美人体大胆666| 情事1991在线| 97香蕉久久超级碰碰高清版| 热99精品里视频精品| 69xx绿帽三人行| 欧美一级播放| 国产一区二区三区黄片| 欧美韩国日本不卡| 久久天堂久久| 国产www免费观看| 中文字幕一区二区人妻| 久久精品久久精品国产大片| 精品午夜久久| 777xxx欧美| 日韩不卡一二三区| 美国成人av| 欧美日韩国产经典色站一区二区三区| 午夜精品一区二区三区av| 日日干夜夜骑| 国产乱码精品一区二区三区卡| 天天看片天天操| 久久久久在线| 精品久久久久久无码人妻| 在线观看福利片| 一区二区免费电影| 日韩私人影院| 精品国产一二三区| 欧美一级在线播放| 欧美一级特黄aaaaaa大片在线观看| 亚洲综合免费观看高清在线观看| 久草免费在线| 国产精品区在线| 久久9999久久免费精品国产| 国产美女极度色诱视频www| 天堂在线中文| 国产精品久久久久久av| 在线天堂资源| 播九公社成人综合网站| 久久黄色av网站| 亚洲欧美激情在线| 亚洲一区二区三区四区电影| 亚洲在线视频一区二区| а√天堂8资源中文在线| 欧洲一区二区视频| 欧美不卡视频一区| 麻豆91av| 中文字幕第315页| 99视频精品全部免费在线| 国产精品影音先锋| 97色在线播放视频| yw视频在线观看| 久久99精品国产自在现线小黄鸭| 动漫美女无遮挡免费| 亚洲欧美日韩国产| 岳张嘴把我的精子吞下去| 欧美黄网免费在线观看| 久色国产在线| 九九色在线观看| 欧美日韩色图| 国产精品一区二区三区网站| 免费观看黄色网| 亚洲欧美一区在线| 96亚洲精品久久久蜜桃| 一本色道**综合亚洲精品蜜桃冫| 国产精品一区免费在线观看| 欧美激情三级免费| 年轻的保姆91精品| 亚洲 国产 欧美 日韩| av成人在线观看| 亚洲视频导航| 国产麻豆成人精品| 国产资源在线视频| 999香蕉视频| 黄色一区二区在线| 午夜激情视频在线观看| 成人午夜又粗又硬又大| 天天弄天天操| 亚洲大奶少妇| 日韩av成人在线| av中文字幕在线| 嫩草影院入口一二三| 一区二区三区日韩精品视频| 可以直接看的av网址站| 337p亚洲精品色噜噜狠狠| 91视频啊啊啊| 天天摸日日摸狠狠添| 中日韩高清电影网| 国产在线资源| 日韩一卡二卡在线观看| 在线视频欧美一区| 伊人久久大香线蕉无限次| 欧美日韩一区二区在线观看| 91精品国产一区二区| 热99久久精品| 中文字幕在线直播| 亚洲永久免费视频| 永久免费在线看片视频| 国产成人av福利| 天天做天天爱夜夜爽| 男生操女生视频网站| 久久久这里只有精品视频| 婷婷五月在线视频| 精品少妇在线视频| 无码人妻精品一区二区三区夜夜嗨| 久久99国产精品99久久| 香蕉久久久久久| 99热这里只有精品在线观看| 亚洲精品aaa| 国产黄视频在线观看| 一级黄色短视频| 欧美日韩视频精品二区| 五十路六十路七十路熟婆| 中文字幕免费在线看线人动作大片| 新91视频在线观看| 三区在线观看| 亚洲最大最好的私人影剧院| 男人插曲女人视频免费| 韩日视频在线观看| 亚洲激情国产精品| 国产高清在线看| 国产精品白浆视频免费观看| 久久精品国产福利| 一区二区三区 欧美| 国产精品影视天天线| 欧美精品羞羞答答| 色www免费视频| 免费欧美日韩| 国产精品无码乱伦| 亚洲精品国产精品国自产在线| 国产国产精品人在线视| 波多野结衣大片| 91吃瓜网在线观看| 在线观看日韩视频| 蜜桃视频在线观看播放| 免费看一级一片| 欧美午夜不卡在线观看免费| 在线看的你懂得| 国产精品视频一区二区三区麻豆| 欧美成人高潮一二区在线看| 欧美性生交大片| 亚洲精品v日韩精品| 内射中出日韩无国产剧情| 日本一区二区三区网站| 久久夜色电影| 亚洲三级黄色在线观看| rebdb初裸写真在线观看| 精品国产国产综合精品| 午夜伊人狠狠久久| 久久国产精品视频| 特级西西444www| 亚洲国产精品国自产拍av| 亚洲电影在线观看| 日本国产在线播放| 国产精品一区在线观看你懂的| 欧美亚洲一区二区三区四区| 国产精品丝袜91| 亚洲欧洲久久久| 99re成人精品视频| 免费在线看一区| 久久精品视频6| 日本亚洲视频在线| 9色在线视频网站| 草莓视频成人appios| 欧美高清自拍一区| 亚洲毛片一区二区| 好吊的妞视频这里都有| 欧美激情综合五月色丁香| 亚洲午夜精品网| 伊人成人免费视频| 国产91视频在线| 国产一区2区在线观看| 国产一区二区三区四区五区美女| 久久久久久久久久久亚洲| 青草国产精品久久久久久| 欧美性受xxxx黑人猛交| 狠狠干狠狠插| 日韩视频一区二区三区在线播放免费观看| 成人在线免费在线观看| 日韩av一区二区三区| 国产精品久久久免费看| 久久精品国产精品青草色艺| 国产精品久久久久久久乖乖| 三年中国国语在线播放免费| 97久久人人超碰caoprom| 福利资源在线观看| 91av在线播放| 青青国产在线视频| 18精品爽视频在线观看| 91人人爽人人爽人人精88v| 在线看a视频| 日本伊人精品一区二区三区介绍| 欧美精品成人91久久久久久久| 成人激情综合网| 成人妇女免费播放久久久| 国产一区二区av| 久草热视频在线观看| 色综合 综合色| 小早川怜子痴女在线精品视频| 好男人社区在线视频| 国产高清不卡无码视频| 亚洲欧美国产精品桃花| 毛片在线视频播放| 国产在线视频欧美一区| 午夜精品久久久久久久无码| 国产免费a∨片在线观看不卡| 中文字幕欧美日韩va免费视频| 在线观看中文字幕码| 中文字幕视频二区| 日韩国产欧美一区二区三区| 99在线精品视频免费观看20| 尤物在线观看| 激情视频小说图片| eeuss影院网站免费观看| 午夜精品福利一区二区| 日韩av资源| 日本一区二区三区四区五区| 又色又爽又黄无遮挡的免费视频| 日韩午夜黄色| 日本一区二区三区中文字幕| 日韩成人在线一区| 亚洲欧美另类日本| 一本一本久久a久久精品综合小说| 欧美精品一区视频| 欧美激情1区2区3区| 日韩av一卡| 狠狠做六月爱婷婷综合aⅴ| 91精品丝袜国产高跟在线| 成人精品一区二区三区校园激情| 国产毛片精品一区| 再深点灬舒服灬太大了少妇| 蜜桃久久久久久久| 欧美日韩在线看片| 涩涩视频网站在线观看| 中文字幕亚洲无线码在线一区| 成人午夜看片网址| 黑人40厘米全进去| 99精品小视频| 久久久久久久久久久免费视频| 欧美日韩一区二区在线视频| 欧美日韩免费在线| 国内在线视频| 老司机免费视频一区二区| 中文视频一区视频二区视频三区| 日韩暖暖在线视频| 综合久久五月天| 懂色av色香蕉一区二区蜜桃| 免费在线观看污视频| 成人午夜激情片| 色婷婷精品久久二区二区密| 欧美成人精品| 无码国精品一区二区免费蜜桃| 91麻豆精品一二三区在线| 国产不卡精品视男人的天堂| 五月婷婷综合激情| 日韩电影中文字幕在线| 蜜臀av.com|