当前位置: 首页 > news >正文

网站帮助文档怎么写成功案例网站建设

网站帮助文档怎么写,成功案例网站建设,郑州招聘网站有哪些,重庆网站建站模板以下内容均为Let’s Go Further内容节选以及作者本人理解。 这里创建了一个后台进程用于捕获关闭信号#xff0c;在后台进程中#xff0c;主要内容为#xff1a; 创建一个缓冲通道 quit使用signal.Notify函数监听并捕获关机信号SIGINT,SIGTERM#xff0c;在捕获关机信号后…以下内容均为Let’s Go Further内容节选以及作者本人理解。 这里创建了一个后台进程用于捕获关闭信号在后台进程中主要内容为 创建一个缓冲通道 quit使用signal.Notify函数监听并捕获关机信号SIGINT,SIGTERM在捕获关机信号后缓冲通道取值操作才会执行取消阻塞。随后使用shutdown函数关闭服务器。工作原理是首先关闭所有打开的侦听器然后关闭所有空闲连接然后无限期地等待连接返回空闲状态然后关闭。如果关闭连接时发生错误则将错误存储进入通道主程序取出错误取消阻塞。返回错误。如果正常关闭连接app.wg.Wait()等待全部后台进程全部运行结束后放行随后向错误通道存储空值放行主程序。此时连接和后台进程全部关闭打印日志结束。 package mainimport (contexterrorsfmtnet/httposos/signalsyscalltime )func (app *application) serve() error {srv : http.Server{Addr: fmt.Sprintf(:%d, app.config.port),Handler: app.routes(),IdleTimeout: time.Minute,ReadTimeout: 10 * time.Second,WriteTimeout: 30 * time.Second,//服务器可以编写自己的日志消息,实现Write方法变成io.Write接口可以将自定义日志传递进去//ErrorLog: log.New(logger, , 0),}shutdownErr : make(chan error)//开启一个后台进程 捕获关闭信号关闭所有连接和后台进程实现优雅的关机go func() {//创建一个通道保存os.Signal值/*在这里使用缓冲通道如果使用非缓冲通道quit 通道 在信号发送的时刻没有准备去接收会错过信号*/quit : make(chan os.Signal, 1)//使用signal.Notify监听SIGINT and SIGTERM信号并将他们传入quit通道。其他信号不会被捕获并保留他们默认的行为。signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)//从通道中读取值这个操作将被阻塞直到通道接收一个值s : -quitapp.logger.PrintInfo(shutting down server, map[string]string{signal: s.String(),})//创建一个5秒的上下文ctx, cancelFunc : context.WithTimeout(context.Background(), 5*time.Second)defer cancelFunc()//服务调用shutdown如果成功关闭将返回nil或者返回错误当关闭一个监听器时遇到问题或者在到达截止日期时没有完成/*工作原理是首先关闭所有打开的侦听器然后关闭所有空闲连接然后无限期地等待连接返回空闲状态然后关闭。*//*1. 关闭连接时没有返回错误说明连接全部关闭但是还有后台进程告诉正在执行关闭后台进程需要等待wg归零。2. 关闭连接出现错误。将err存入通道放行主程序*///shutdown返回的是一个error类型的变量err : srv.Shutdown(ctx)//通道中存入错误主程序取消阻塞继续执行if err ! nil {shutdownErr - err}//正在完成后台进程app.logger.PrintInfo(completing background tasks, map[string]string{addr: srv.Addr,})app.wg.Wait()//后台进程全部关闭后放行主程序shutdownErr - nil}()app.logger.PrintInfo(starting server, map[string]string{addr: srv.Addr,env: app.config.env,})//调用shutdown会造成ListenAndServer立刻返回一个http.ErrServerClosed错误。如果是这个错误表明我们的程序优雅的关闭了err : srv.ListenAndServe()if !errors.Is(err, http.ErrServerClosed) {return err}//阻塞 关闭后才能继续执行err -shutdownErrif err ! nil {return err}app.logger.PrintInfo(stopped server, map[string]string{addr: srv.Addr,})return nil } 关于使用后台进程运行其他任务时使用函数background来启动后台进程 func (app *application) background(fn func()) {//开启一个后台进程app.wg.Add(1)go func() {defer app.wg.Done()//使用延迟函数捕获可能出现的panicdefer func() {if err : recover(); err ! nil {app.logger.PrintError(fmt.Errorf(%s, err), nil)}}()fn()}() }
http://www.hkea.cn/news/14549959/

相关文章:

  • 外贸网站小语种上海的装修公司前十强有哪些
  • 中英文外贸网站模板网站建设现状和前景
  • 佛山网站建设定制网站色差表
  • 网站建设案例精粹 电子书营销型企业网站建设教案
  • 成都外贸网站建设费用男女宾馆做爰视频网站
  • 模板网站和定制网站后缀的区别黑群晖安装wordpress
  • 厦门建设局网站改到哪最近新闻摘抄
  • 企业自己做网站wordpress 所有钩子
  • 网站开发科技公司技术网站推广范例
  • 苏州做管网gis的网站wordpress 微网站模板
  • 中国建设银行网站用户注册网站推广软文甄选天天软文
  • 做网站定金交多少合适wordpress安卓下载
  • 织梦免费网站模块设计案例的网站
  • 游戏网站制作教程织梦网站内容管理系统
  • 做网站要学的教程山东省聊城建设学校网站
  • 登别的网站应怎么做外贸网站建设 评价
  • 企业网站建设注意什么淮北住房和城乡建设局门户网站
  • 韩国优秀网站阿里云wordpress镜像
  • 如何在百度搜到自己的网站个人做旅游网站的意义
  • 怎么做网站关键词视频竞价推广怎样管理
  • 专业网站建设的公司哪家好如何注册一个设计网站
  • 分析网站结构360建站工具
  • 网站公司用什么服务器大地影院资源免费观看视频
  • 电子商务网站建设服务百度热搜榜
  • 新建设电影院 网站注册商标有什么好处和坏处
  • 网站开发策略都有啥开发网站价格
  • 企业网站手机端太简洁吉林网站建设平台
  • 加油站顶棚网架价多少钱一平做奢侈品网站有哪些
  • 双语版网站引导页wordpress 豆瓣
  • 做偏门网站百度搜索一下