教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang(go语言)消息传递(管道)方法实现发送多个get请求

golang(go语言)消息传递(管道)方法实现发送多个get请求

发布时间:2021-12-24   编辑:jiaochengji.com
教程集为您提供golang(go语言)消息传递(管道)方法实现发送多个get请求等资源,欢迎您收藏本站,我们将为您提供最新的golang(go语言)消息传递(管道)方法实现发送多个get请求资源

1.需求说明

我用django rest framework写了一个简单的用户增删改查小案例,然后我想使用golang实现一个多并发请求,看看我的小项目能承受多少请求!初学go代码不正确,请多多指点。

2.代码实现

<pre><code class="language-Go">//基本的GET请求 package main import ( "fmt" "io/ioutil" "net/http" "time" ) // HTTP get请求 func httpget(ch chan int){ resp, err := http.Get("http://localhost:8000/rest/api/user") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) fmt.Println(string(body)) fmt.Println(resp.StatusCode) if resp.StatusCode == 200 { fmt.Println("ok") } ch <- 1 } // 主方法 func main() { start := time.Now() // 注意设置缓冲区大小要和开启协程的个人相等 chs := make([]chan int, 2000) for i := 0; i < 2000; i { chs[i] = make(chan int) go httpget(chs[i]) } for _, ch := range chs { <- ch } end := time.Now() consume := end.Sub(start).Seconds() fmt.Println("程序执行耗时(s):", consume) }</code></pre>

3.结果

当我把开了10000个协程时候django后台数据库就崩了哈哈应该连接数过大导致的,所以我就试了2000个感觉有点并发的意思哈哈!左侧是返回的json结果 右侧是django的后台!

4.总结

我们通过go语言的管道channel来实现并发请求,能够解决何避免传统共享内存实现并发的很多问题而且效率会高于共享内存的方法。 

到此这篇关于“golang(go语言)消息传递(管道)方法实现发送多个get请求”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
golang(go语言)消息传递(管道)方法实现发送多个get请求
Go语言并发模型:使用 context
go 类型 value 不支持索引_Go语言基础(十四)
golang知识点
Go 语言到底适合干什么?
2020-10-19Go语言goroutine和channel
Golang库集合
golang协程——通道channel阻塞
Golang号称高并发,但高并发时性能不高解决办法
Go语言之协程goroutine和通道channel讲解

[关闭]
~ ~