Go context cancel!!!
上班突然爆出一个Bug,业务执行失败,翻遍了elk都没找到错误在哪。
最后发现有些查询数据库的地方,没有判断err,随后加上。
err里面是context cancel!
oh my god,这不是父协程死掉了嘛,然后把孩子都cancel了。
继续定位。
原来函数用了Grpc进行调用,Grpc会立即返回消息,所以函数的主协程也就关掉了,上下文就没有了。
解决办法:
子协用context.Background(),作为协程根就好了。
如果有什么参数需要上下文传的话,可以用withvalue这个函数,在context里面有封装好。
Go context cancel!!!相关推荐
- Go 学习笔记(68)— goroutine 并发控制神器 Context
1. 什么是 Context 一个任务会有很多个 goroutine 协作完成,一次 HTTP 请求也会触发很多个 goroutine 的启动,而这些 goroutine 有可能会启动更多的子 gor ...
- golang库context学习
context库 context最早的背景说明还是来源于官方的 博客,说明如下: 在Go服务器中,每个传入请求都在其自己的goroutine中进行处理. 请求处理程序通常会启动其他goroutine来 ...
- 此上下文中不允许函数定义。_深度好文 | 你知道Go中的 context 是怎么实现的吗?...
Go语言中文网,致力于每日分享编码知识,欢迎关注我,会有意想不到的收获! Go 语言的 context 包短小精悍,非常适合新手学习.不论是它的源码还是实际使用,都值得投入时间去学习. 这篇文章依然想 ...
- Go 语言编程 — Context 上下文
目录 文章目录 目录 Goroutine 的控制方式 WaitGroup Channel + Select 通知 Context Context Context 的接口 Context 的继承衍生 使 ...
- Go 语言并发模型 Context
引言 在之前的博客中,讲到过 Go 语言的优势之一是支持并发,而且也谈到过,使用 WaitGroup 控制多个 goroutine 实现并发. 本篇博客将谈一下 Go 语言的另一种并发模型-- Con ...
- golang context 父子任务同步取消信号 协程调度 简介
目录 前言 为什么需要context context是什么 context的使用 总结 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context.本文将从为什么需要context出 ...
- Golang Context包的使用
context包主要用来控制goroutings间的并发控制.使用场景包括通知子协程退出这种. 相关接口和示例: func Background() Context Background return ...
- 理解GO CONTEXT机制
1 什么是Context 最近在公司分析gRPC源码,proto文件生成的代码,接口函数第一个参数统一是ctx context.Context接口,公司不少同事都不了解这样设计的出发点是什么,其实我也 ...
- 并发安全Context包的使用
前言–为什么需要Context Golang context是Golang应用开发常用的并发控制技术,它与WaitGroup最大的不同点是context对于派生goroutine有更强的控制力,它可以 ...
最新文章
- php输出带的字符串吗,php输出含有“#”字符串的方法
- canvas三角函数模拟水波效果
- 比特币现金正走在被广泛应用的路上
- 论面向组合子程序设计方法 之 南无阿弥陀佛
- kafka0.8消费者实例
- android状态机是线程么,Java中的线程状态机 - java
- Linux系统管理(10)——Centos8 重启网络服务 网络相关命令
- Spring Boot 中的线程池,这也太好用了!
- 解析域名地址并生成win路由增强版
- 9、网友问答----有关清零问题------------------labview宝典
- Android ViewModel与LiveData组件组合使用详解
- HDU 6069 Counting Divisors
- 基于PHP的酒店住宿管理系统 毕业设计源码261455
- Windows11无法打开 WindowsTerminal 图形化设置界面
- 关于CultureInfo
- AMD天下!10款超性价比S754闪龙主板
- GBase 8s灾备集群HAC (四) 异地灾备RSS
- 订单中心,究竟是分还是合?
- Dijkstra-POJ-2387-Til the Cows Come Home
- LTE RACH
热门文章
- IT十八掌Java基础 网络编程
- ​360搜索下拉词框跟相关搜索算法原理是什么?如何做360下拉推广?​
- rEFInd去掉不必要的启动项
- 使用 VMware 装一个 fedora 虚拟机并设置共享文件夹的平凡之路…
- golang redirect时设置cookie
- css绝对定位与相对定位结合使用
- 【python面向对象】继承与多态(二)
- matlab 半正定规划,半定规划算法(Semi-Definite Programming Algorithm).ppt
- Oracle-SQL
- 2020-1-19 2.港股打新、REITs和分拆