博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言context超时控制代码示例
阅读量:4100 次
发布时间:2019-05-25

本文共 853 字,大约阅读时间需要 2 分钟。

package mainimport (	"context"	"fmt"	"io/ioutil"	"log"	"net/http"	"time")//存储响应结果type Result struct {	resp *http.Response	err error}func process(){	ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)	defer cancel()	tr := &http.Transport{}	client := &http.Client{Transport:tr}	c := make(chan Result,1)	req, err := http.NewRequest("GET","http://google.com",nil)	if err != nil {		log.Println("请求谷歌失败:",err)		return	}	go func(){		fmt.Println("aaaaaaaa")		resp, err := client.Do(req)		fmt.Println("bbbbbbbb")		pack := Result{resp:resp, err:err}		c <-pack	}()	select {	case <-ctx.Done(): //2s超时后		tr.CancelRequest(req) //取消请求resp, err := client.Do(req),不再继续请求谷歌,		<-c		log.Println("Timeout")	case res := <-c:		defer res.resp.Body.Close()		out,_:=ioutil.ReadAll(res.resp.Body)		fmt.Printf("Server Response:%s",out)	}}func main(){	process()}

 

转载地址:http://tzwsi.baihongyu.com/

你可能感兴趣的文章
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>
servlet&jsp 的使用以及jsp的历史遗留用法
查看>>