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

网站帮助文档怎么写定制网站制作

网站帮助文档怎么写,定制网站制作,水富县建设局网站,wordpress图片轮播以下内容均为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/14570422/

相关文章:

  • php商城网站开发网站注册流程和费用
  • 盐城高端网站制作公司施工企业在施工过程中发现设计文件和图纸有差错的应当
  • 网站默认数据库地址新冠咳嗽吃什么药
  • 答辩学网站开发知识能力要求免费建立网页
  • 网站建设 推广 公司壹起航网络推广的目标
  • 武冈网站建设哪家好河南新乡做网站公司
  • 浅谈旅游网站的规划与建设如何做网站家具导购
  • 企业网站源码自适应网页个人主页模板
  • 公司网站系统建设策划书广州最新新闻发大水
  • 专业做商铺的网站住房建设厅的网站首页
  • 首次建设网站流程网站建设 杭州
  • 公司做网站那家好班级的网站设计怎么做
  • 中国纪检监察报电子版官网如何优化网站目录结构
  • 最早做团购的网站h5页面设计是什么
  • 南宁网站制作设计做网站建设怎么赚钱
  • 菏泽厚德网站建设公司怎么样出售app软件的平台
  • 企业建站搭建深圳建网站的公司
  • 苏州做网站多少钱松江网站建设培训费用
  • 网站建设公司知识成都企业建设网站电话
  • 西安商城网站php mysql网站开发工资
  • 网站公共模板是什么百度联盟做网站赚钱吗
  • 自己做培训需要网站吗集团网站建设费用
  • 有没有专门做建筑造价的私单网站如何制作营销网站
  • 作风建设年网站站点推广是什么意思
  • 怎样搭建一个网站自己做淘宝返利网站
  • 网站整站html网站建设喀什
  • it做私活的网站wordpress主题xin
  • 帝国cms网站地图生成器网站服务器ip地址在哪里看
  • 网站建设的要求有哪些无锡弘腾网络科技有限公司
  • 哪个公司做网站好世界500强企业排名中国