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

wordpress 多站点 主题多媒体制作公司

wordpress 多站点 主题,多媒体制作公司,新网站如何做百度关键词,今天西安最新通知使用Go开发web服务时很多情况下都会使用号称比标准库快10x的FastHttp, 但fasthttp(版本: 20180529.0.0)至今也没有提供优雅关闭的方法#xff0c;默认情况下退出服务只能kill。下面谈几个实现方案。 首先#xff0c;要明确所谓的优雅关闭是要求我们在调用close()时要做到以下…使用Go开发web服务时很多情况下都会使用号称比标准库快10x的FastHttp, 但fasthttp(版本: 20180529.0.0)至今也没有提供优雅关闭的方法默认情况下退出服务只能kill。下面谈几个实现方案。 首先要明确所谓的优雅关闭是要求我们在调用close()时要做到以下几点 拒绝接受新连接等待正在处理的请求完成然后关闭连接关闭剩余空闲的连接 要做到第一点我们需要重写一下net.Listener实现例如叫GraceListener, 在此结构体中组合一个真正干活的Listener覆盖Close()方法在此方法中先将干活的Listener关闭此时就不会再监听新请求了然后再block当前routine直到所有连接全部关闭为止。代码如下 type graceListener struct {net.Listener }func (gl *graceListener) Close() error {err : gl.Close()if nil ! err {return err}// block, 直到所有连接关闭 } fastServ : fasthttp.Server{Concurrency: 100,Handler: xxxFunc,LogAllErrors: true,}ln, err : net.Listen(tcp4, :8080)if nil ! err {// err}graceLn : graceListener{Listener: ln,}fastServ.Serve(graceLn) 接下来看看如何满足后面两条要求。这里有两种方案第一种最简单的方案是保存一个全局的sync.WaitGroup指针在你的请求处理函数中先调用wg.Add(1), 然后defer wg.Done(), 最后在上面的Close()方法中使用wg.Wait()即可。这里建议最好使用select给等待加个超时功能即如果超过指定时间还没有退出则强制退出 // 此方法一直block到所有请求退出或超时 func WaitForGracefullyClose() error {select {case -waitAllRoutineDone():return nilcase -time.After(maxWait):return fmt.Errorf(force shutdown after %v, maxWait)}}// 等待所有请求处理routine完成; // 此方法返回只有1个缓冲的channel, 只有当所有routine结束时channel才会有元素 func waitAllRoutineDone() chan struct{} {flagChan : make(chan struct{}, 1)go func() {wg.Wait()flagChan - struct{}{}}()return flagChan } 此外还有第二种方案那就是在自己的graceListener中添加一个计数器用于统计当前的连接数重写Accept()方法将计数器1再定义一个自己的套壳net.Conn实现重写Close()方法在里面将计数器-1。这里要注意线程安全问题最好使用atomic包进行操作。最后在graceListener#Close()中关闭Listener后等待计数器归零。这种方案有以下几个缺点 实现繁琐无法处理keep-alive连接。即请求已经处理完成但是连接并没有关闭这时计数器不会归零。不过可以使用go 1.3新增加的 Conn State Hook来实现当连接状态变更时的通知但是也是比较繁琐的。 因此不推荐这种方案。 完成Http Server的关闭后就可以添加一些清理自己业务资源的逻辑了比如关闭数据库连接redis连接取消注册刷新日志等。
http://www.tj-hxxt.cn/news/223994.html

相关文章:

  • jsp如何做网站界面海南网站建设优化排名
  • 市场上网站开发价格长沙seo推广营销
  • 肇庆 网站建设公司有哪些怎么制作网页步骤
  • 门户网站设计行业他达拉非
  • 网站开发主机的选择网站集群建设解决方案
  • 株洲网站建设费用赣州门户网站建设
  • 网站如何做数据储存的江苏省建设斤网站
  • seo推广方式是什么呢站长工具seo综合查询收费吗
  • 如何制作简单的网站微信支付需要网站备案
  • 网站特效代码html网站建设公司如何做大
  • 登录器显的窗口网站怎么做广州网站建设工作室招聘
  • 网站建设费专票会计分录洛阳seo管理系统推广团队
  • 零食网站怎么做465端口 WordPress
  • 网页制作与网站开发...郑州seo外包公司哪家好
  • 互联网站备案信息佛山网站建设工作室
  • 输入网站查看空间wap页面模板
  • 天津手机版建站系统哪个好东莞微客巴巴做网站
  • 东丽区网站建设公司wordpress登录背景
  • 企业解决方案提供商宜春seo
  • 俄文网站建设 俄文网站设计如何做好一个网站运营
  • 网站制作的差异化定位网络建设公司方案
  • 微网站建设公司首选做的好的办公家具网站
  • 河南做网站哪个平台好如何建立微信群
  • wordpress本地音乐2m杭州seo
  • 网站设计广州哪里有做网站系统的
  • dedecms网站开发环境深圳投资推广署官网
  • 站长工具备案查询wordpress newsletter 插件
  • 奖励软件下载网站电白区住房和城乡建设部门户网站
  • 网站开发 接口还是ajax统一用户管理系统
  • 青岛网站建设设计免费合作加工厂