[GO]conext的使用
package main import (
"context"
"time"
"net/http"
"fmt"
"io/ioutil"
) type Result struct {
r *http.Response
err error
} func process() {
ctx,cancel := context.WithTimeout(context.Background(), *time.Second)
defer cancel() tr := &http.Transport{}
client := &http.Client{Transport:tr}
c := make(chan Result, )
req, err := http.NewRequest("GET", "http://google.com", nil)
if err != nil{
fmt.Println("http request filed, err:", err)
return
}
go func() {
resp, err := client.Do(req)
pack := Result{r:resp, err:err}
c <- pack
}() select {
case <- ctx.Done()://内部也是一个管道,如果这个管道能够读到数据,说明已经超时了
tr.CancelRequest(req)//取消正在请求的http请求
res := <-c
fmt.Println("timeout!", res.err)
case res := <-c:
defer res.r.Body.Close()
out, _ := ioutil.ReadAll(res.r.Body)
fmt.Printf("server response:%s", out)
}
return
} func main() {
process()
}
执行结果
timeout! Get http://google.com: net/http: request canceled while waiting for connection
[GO]conext的使用的更多相关文章
- 信息中心网络 ,Information-centric networking, ICN
- 中国计算机学会CCF推荐国际学术会议
中国计算机学会推荐国际学术会议 (计算机系统与高性能计算) 一.A类 序号 会议简称 会议全称 出版社 网址 1 ASPLOS Architectural Support for Programmin ...
- 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用
这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...
- Android中,Context,什么是Context?
注:本文翻译自Context, What Context?,原文链接在这里,作者是Dave Smith.ps:译者链接http://blog.csdn.net/race604/article/deta ...
- Tomcat APR & Linux Optimization
一.简介 APR(Apache portable Run-time libraries)模式:简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和响应性能, 也是Tomcat运行高 ...
- ASP.NET权限管理
ASP.NET Web Forms权限管理: 我要将一个文件夹只能让一个用户组访问怎么办? 可否在网站根目录下的web.config里这样设置: <location path="adm ...
- Flask备注三(Context)
Flask备注三(Context) Flask支持不同的应用场景下,对应不同的local context(本地上下文环境),用来提供当前环境下的资源.lcoal context和全局变量以及局部变量最 ...
- Hadoop官方文档翻译——MapReduce Tutorial
MapReduce Tutorial(个人指导) Purpose(目的) Prerequisites(必备条件) Overview(综述) Inputs and Outputs(输入输出) MapRe ...
- shiro realm 注解失败问题解决过程
做为一名在.net混了八九年的老兵油子,转战java时间并不长,刚开始做项目完全是凭借对C#的认识来做,虽然遇到一些问题,但实际结果显示C#在语言上和java还是有很大相似度,而且微软的MVC与Spr ...
随机推荐
- 判断网络类(获取mac) InternetCheck
using System; using System.Collections.Generic; using System.Net.NetworkInformation; using System.Ru ...
- const 补充
char const* ptr1const char * ptr2char * const ptr3 看到这三个const作何感想 其实const比较好理解的是const 后面整体是不能改变的(整体的 ...
- cocos2dx继承结构图
包含关系 CCDirector->CCScene->CCLayer->CCSprite->CCAction 继承关系 CCObject---CCAction(动作,控制图层运动 ...
- 1 预备知识--Hadoop简介
1 预备知识--Hadoop简介 Hadoop是Apache的一个开源的分布式计算平台,以HDFS分布式文件系统和MapReduce分布式计算框架为核心,为用户提供了一套底层透明的分布式基础设施Had ...
- apache 搭建PHP多站点
修改apache 配置文件:httpd.conf 1.默认 Listen 80端口 2.添加配置如下: <VirtualHost *:80> ServerAdmin admin@yii.c ...
- Javascript 日期 加减
//create the date var myDate = new Date(); //add a day to the date myDate.setDate(myDate.getDate() + ...
- _kbhit() for linux
传送门:http://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html #include <stdio.h> #in ...
- NodeJs-Linux环境初步
1.Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能 ...
- java中getAttribute和getParameter的区别
getAttribute表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型 getParame ...
- 如何快速选中某单元格所在的整行或整列 Excel教程
我们可以使用快捷键的操作来快速选中B3单元格所在的整行或整列,操作方法如下,请大家参阅! 一.正规的快捷键操作 ①快速选中整行 按下键盘上的 Shift Space 即同时按下键盘上的Shift 空格 ...