go官方的http.request + context样例
go官方的http.request + context样例
https://github.com/DavadDi/go_study/blob/master/src/httpreq_context/main.go
package main import (
"context"
"fmt"
"io/ioutil"
"log"
"net/http"
"time"
) func HttpDoTest(ctx context.Context, resChan chan<- string) error {
start := time.Now() repoUrl := "https://api.github.com/repos/campoy/golang-plugins"
req, err := http.NewRequest("GET", repoUrl, nil)
if err != nil {
return fmt.Errorf("http.NewRequest Error: %s", err.Error())
} // in go >= 1.7
req = req.WithContext(ctx) client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return fmt.Errorf("client.Do Error: %s", err.Error())
} data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return fmt.Errorf("ioutil.ReadAll Error: %s", err.Error())
} log.Printf("Read body size [%d]", len(data))
log.Println("CostTime is: " + time.Since(start).String()) resChan <- string(data) return nil
} func main() {
deadline := 1
d := time.Now().Add(time.Duration(deadline) * time.Second) // deadline max
ctx, cancel := context.WithDeadline(context.Background(), d)
defer cancel() resChan := make(chan string) go HttpDoTest(ctx, resChan) var resData string
select {
case <-ctx.Done():
fmt.Println(ctx.Err()) /* just for ex use. No used*/
case <-time.Tick(time.Duration(time.Duration(deadline*2) * time.Second)):
fmt.Println("Time over!") case resData = <-resChan:
fmt.Println("Read data finished")
} log.Printf("Read data size: [%d]", len(resData))
}
go官方的http.request + context样例的更多相关文章
- ShardingSphere 知识库更新 | 官方样例集助你快速上手
Apache ShardingSphere 作为 Apache 顶级项目,是数据库领域最受欢迎的开源项目之一.经过 5 年多的发展,ShardingSphere 已获得超 14K Stars 的关注, ...
- Nginx完整配置配置样例【官方版】
我们主要参考nginx官方给出的完整配置的样例: https://www.nginx.com/resources/wiki/start/topics/examples/full/# 完整摘录如下: n ...
- postman 官方 test 脚本样例
Test examples 样例来源: https://learning.getpostman.com/docs/postman/scripts/test_examples/ Test scripts ...
- IronPython 个人网站样例----宝藏挖掘
IronPython for ASP.NET 的 CTP 已经发布两个多星期了,惭愧的是,因为工作繁忙,一直没有太多时间来学习.居然忽略了 Personal Web Site Starter Kit ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 【gRPC】C++异步服务端优化版,多服务接口样例
官方的C++异步服务端API样例可读性并不好,理解起来非常的费劲,各种状态机也并不明了,整个运行过程也容易读不懂,因此此处参考网上的博客进行了重写,以求顺利读懂. C++异步服务端实例,详细注释版 g ...
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
- Ajax框架,DWR介绍,应用,样例
使用Ajax框架 1. 简化JavaScript的开发难度 2. 解决浏览器的兼容性问题 3. 简化开发流程 经常使用Ajax框架 Prototype 一个纯粹的JavaScript函数库,对Ajax ...
- SWFUpload简单使用样例 Java版(JSP)
SWFUpload官方的样例都是PHP的,在这里提供一个Java版的最简单的使用样例,使用JSP页面完毕全部操作. 实现上传,分为三步: 1.JavaScript设置SWFUpload部分(与官方样例 ...
随机推荐
- Nginx stream如何获取ssl信息并反向代理至上游服务器
L:116
- 向继电器发送socket请求(python+java)
近日,有一需求,向连接在内网的继电器发送socket请求,加以控制.原本并不复杂,只是io流/socket转换的问题,实操中却出现python代码没问题,java代码执行无响应的问题,问题很好定位:没 ...
- [BZOJ 1968] [AHOI 2005] 约数研究
Description Input 只有一行一个整数 \(N\). Output 只有一行输出,为整数 \(M\),即 \(f(1)\) 到 \(f(N)\) 的累加和. Sample Input 3 ...
- django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")
报错现象 在使用 django 创建 超级用户的时候提示报错 Password (again): ytyt521521 Traceback (most recent call last): File ...
- composer 重装常见错误
install composer error: ------------------------------------ The PHP exe file you specified did not ...
- Haproxy 优化
Haproxy 自身健康检查vi /usr/local/haproxy/sbin/check_haproxy.sh #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/b ...
- Shell 流程控制-if 语句
单分支if条件语句 if [ 条件判断式 ] ; then程序fi 例子:判断分区使用率 #!/bin/bash # Author: huangrui (Email:mycheryhr@gmail.c ...
- Codeforces | CF1029D 【Concatenated Multiples】
\(qwq\)昨天晚上\(Div.3\)过了这道题...早上交了\(1A\)...看在\(CF\)上\(hack\)的情况并不乐观而且也没人来交这题的份上...我决定发一篇题解帮\((zhuang)\ ...
- Arukas.io云主机安装CentOS
创建应用 1 jdeathe/centos-ssh:centos-6 启动应用 电机启动应用,应用会自动部署,等显示Running 就说明成功了.估计需要几分钟. 查看用户以及密码 自己保存下用户 ...
- [IOI2014]holiday假期(分治+主席树)
题目描述 健佳正在制定下个假期去台湾的游玩计划.在这个假期,健佳将会在城市之间奔波,并且参观这些城市的景点.在台湾共有n个城市,它们全部位于一条高速公路上.这些城市连续地编号为0到n-1.对于城市i( ...